2012-08-03 2 views

답변

2

같은 방법으로 당신은 하나의 버튼에서와 ...

당신이 배열이 경우는 다음과 같이 보일 것이다, 클릭 리스너상의 설정 :

btns[0].setOnClickListener(new OnClickListener() { 
    public void onClick(View v){ 
     //do something 
    } 
}); 

btns[1].setOnClickListener(new OnClickListener() { 
    public void onClick(View v){ 
     //do something 
    } 
}); 
//etc. 

을 그들 모두가 같은 일을하기를 원한다면 for 루프를 사용하여 다음과 같이 배열을 반복 할 수 있습니다 :

for(int i = 0; i< btns.length; i++){ 
    btns[i].setOnClickListener(new OnClickListener() { 
     public void onClick(View v){ 
      //do something 
     } 
    }); 
} 

정확히 무엇을하고 있는지 모르겠다. 버튼 배열이 있다면 아마 지금하고있는 모든 작업을 수행하는 대신 ListView 나 다른 어댑터가있는 어댑터를 사용해야 할 것 같다. 설명의 일부 코드 이상을 보지 않고

+0

를? if (btn [i] == 0) (action1) .... if (btn [i] == 100) (action100), 응답이 아님 – delive

1

, 그것은 정말 귀하의 질문에 대답하기 어렵지만, 여기에 몇 가지 팁입니다

우리가 청취자에 도착하기 전에, 우리가 확인해야는 동적으로 생성 된 각각의 버튼은 클릭 이벤트에 응답하는 방법을 알고 있습니다. 단추에 setTag 메서드를 사용하여 임의의 Object를 단추에 첨부 할 수 있습니다. 이 Object는 클릭했을 때의 Button 동작을 나타냅니다. Integer를이 Object (아마도 상수 값)로 사용하거나 각 버튼에 고유 한 데이터가 필요한 경우 클릭 할 때 버튼이 어떻게 작용해야하는지와 필요한 데이터 (또는 적어도 하나 이상의 참조)를 유지하는 클래스를 만듭니다.).

그런 다음 모든 단추 클릭을 처리하는 단일 수신기를 초기화 할 수 있습니다. 이 수신기의 onClick 메소드에는 모든 클릭 사례를 처리하도록 분기하는 조건부를 배치합니다. 동적 단추를 만들 때이 청취자를 모든 동적 단추에 설정하십시오. onClick을 시작할 때 onClick 메서드의 View 매개 변수에서 태그를 가져옵니다 (이보기는 클릭 된 버튼입니다).이 태그를 사용하여 조건부 분기를 결정합니다.

희망이 도움이됩니다. 질문을 좀 더 구체적으로 작성하면보다 자세한 도움을 드릴 수 있습니다.

5

모든 버튼에 대해 새로운 OnClickListener를 만들 필요가 없습니다. 모든 버튼은 단일 수신기를 공유 할 수 있습니다. 물론

private OnClickListener myListener = new OnClickListener() { 
    public void onClick(View v) { 
    Object tag = v.getTag(); 
    // Do something depending on the value of the tag 
    } 
}; 

... 

for (int i=0; i < btns.length; ++i) { 
    btns[i].setOnClickListener(myListener); 
    btns[i].setTag(some_identifying_information); 
} 

, 당신 각 버튼에 대해 고유 한 OnClickListener를을 작성하고, 장점이 방법이 걸릴 수 : 100를 제어하려면

for (int i=0; i < btns.length; ++i) { 
    final Button btn = btns[i]; 
    btn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // do something depending on the value of btn, which you're allowed 
     // to reference here because it was declared final above. 
    } 
    }); 
} 
+0

p.s. 개인적으로 나는 첫 번째 패턴을 선호합니다. –

+0

OnClickListener 객체를 다시 사용하는 것이 좋습니다. – FoamyGuy

관련 문제