답변
같은 방법으로 당신은 하나의 버튼에서와 ...
당신이 배열이 경우는 다음과 같이 보일 것이다, 클릭 리스너상의 설정 :
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 나 다른 어댑터가있는 어댑터를 사용해야 할 것 같다. 설명의 일부 코드 이상을 보지 않고
, 그것은 정말 귀하의 질문에 대답하기 어렵지만, 여기에 몇 가지 팁입니다
우리가 청취자에 도착하기 전에, 우리가 확인해야는 동적으로 생성 된 각각의 버튼은 클릭 이벤트에 응답하는 방법을 알고 있습니다. 단추에 setTag
메서드를 사용하여 임의의 Object를 단추에 첨부 할 수 있습니다. 이 Object는 클릭했을 때의 Button 동작을 나타냅니다. Integer를이 Object (아마도 상수 값)로 사용하거나 각 버튼에 고유 한 데이터가 필요한 경우 클릭 할 때 버튼이 어떻게 작용해야하는지와 필요한 데이터 (또는 적어도 하나 이상의 참조)를 유지하는 클래스를 만듭니다.).
그런 다음 모든 단추 클릭을 처리하는 단일 수신기를 초기화 할 수 있습니다. 이 수신기의 onClick
메소드에는 모든 클릭 사례를 처리하도록 분기하는 조건부를 배치합니다. 동적 단추를 만들 때이 청취자를 모든 동적 단추에 설정하십시오. onClick을 시작할 때 onClick
메서드의 View
매개 변수에서 태그를 가져옵니다 (이보기는 클릭 된 버튼입니다).이 태그를 사용하여 조건부 분기를 결정합니다.
희망이 도움이됩니다. 질문을 좀 더 구체적으로 작성하면보다 자세한 도움을 드릴 수 있습니다.
모든 버튼에 대해 새로운 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.
}
});
}
p.s. 개인적으로 나는 첫 번째 패턴을 선호합니다. –
OnClickListener 객체를 다시 사용하는 것이 좋습니다. – FoamyGuy
- 1. 스크롤 가능한 갤러리의 ImageView setOnCLickListener를 실행하는 방법
- 2. 두 개의 버튼 사이에서 listview를 관리하는 방법
- 3. 배열에서 이미지를 채우는 버튼
- 4. AutoCompleteTextView에 setOnClickListener를 설정하는 방법은 무엇입니까?
- 5. 여러 클래스에서 setOnClickListener를 호출하면 콜백이 하나만 발생합니까?
- 6. 레일에서 액션 버튼 상태를 관리하는 모범 사례
- 7. iphone의 버튼 배열에서 특정 버튼을 누르는 방법 (uitableview가 아닌)?
- 8. 정수를 저장하는 배열에서 버튼 태그 할당
- 9. REST에서 상태를 관리하는 방법
- 10. .net 종속성을 관리하는 방법
- 11. AS2에서 깊이를 관리하는 방법
- 12. 집행자를 관리하는 방법
- 13. ado.net 트랜잭션을 관리하는 방법
- 14. CPU 리소스를 관리하는 방법
- 15. 올바른 코드를 관리하는 방법
- 16. GitHub에서 리포지토리를 관리하는 방법
- 17. 트리거를 관리하는 방법
- 18. 컬렉션의지도를 관리하는 일반적인 방법
- 19. 관리하는 방법 메모리
- 20. mongodb에서 인덱스를 관리하는 방법
- 21. 릴리스 분기를 관리하는 방법
- 22. GridView를 관리하는 방법
- 23. 엔티티 데이터를 관리하는 방법
- 24. 연결 풀링을 관리하는 방법
- 25. Node.js에서 세션을 관리하는 방법
- 26. ado.net가 거래를 관리하는 방법
- 27. 무료 버전을 관리하는 방법?
- 28. 기간을 만들고 관리하는 방법
- 29. 문자열을 관리하는 방법
- 30. 여러 스레드를 관리하는 방법
를? if (btn [i] == 0) (action1) .... if (btn [i] == 100) (action100), 응답이 아님 – delive