2010-11-19 4 views
0

각 행에 2 개의 버튼이있는 목록보기가 있습니다. cursoradpater를 사용하여 목록을 채 웁니다.ListView의 OnClickListener가 CursorAdapter로 채워짐

또한 newview() bindview()에서 뷰 홀더 패턴을 사용하고 있습니다.

내 질문 : 버튼에 대한 작업이 목록 항목 자체의 동작과 다르다는 것을 알고있는 버튼에 대한 클릭 리스너를 어디에 두어야합니까? onListItemClick을 유지합니까? 당신이 필요로하는, 그래서

답변

1

당신은, 당신은 버튼의 각 어댑터

final Button button = (Button) findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 

그러나 아마이 목록 항목에서 작동하지 않습니다에 이벤트를 바인딩을 시도 할 수 onListItemClick

필요하지 않습니다 button documentation에 설명 된 것과 같은 새로운 접근 방식입니다.

그러나 액티비티의 버튼에 OnClickListener를 적용하는 대신 android : onClick 속성을 사용하여 XML 레이아웃의 버튼에 메서드를 할당 할 수 있습니다. 예 :

이제 사용자가 버튼을 클릭하면 Android 시스템에서 활동의 selfDestruct (View) 메소드를 호출합니다. 이 작업을 수행하려면 메서드가 public이어야하며 View를 유일한 매개 변수로 받아 들여야합니다. 예 :

public void selfDestruct(View view) { 
    // Kabloey 
} 

클릭 된 위젯에 대한 참조입니다.

+0

그러나 이것은 클릭 한 항목의 위치를 ​​알려주지 않습니다. 단추가 클릭 된 행을 의미합니다. – Mak

+0

단추에'setTag()'를 사용하여 필요한 합성 ID를 설정할 수 있습니다. 그리고 당신은'getTag()'를 통해 전달 된 view 매개 변수를 읽을 것입니다. – Pentium10

관련 문제