공부/Android

Listview의 setOnItemClickListener가 안먹힌다면?

JangGiraffe 2015. 10. 30. 00:30

간혹가다 Listview의 setOnItemClickListener가 안먹힐때가 있습니다.

Listview가 xml에있는 다른 view에 focus를 뺏길 경우에 발생하는데

Button이나 ImageButton이 xml에 있을 경우 listview의 focus를 뺏습니다.

 

제가 아는 해결방법은 두가지가 있는데

첫번째,
Button,ImageButton등 focus를 뺏는 항목을 ImageView,TextView 등으로 바꿔준다.

두번째로 그래도 Button등을 사용하고 싶다면.

xml에서 버튼 등의 속성을  android:focusable="false"로 바꿔주시고

Onclick속성을 추가해줍니다.

그리고 온클릭 함수 안에 코딩을 해줍니다. (삭제 버튼을 예를 들겠습니다)

public void delete(View view){
// myListView : ListView
// myDataList : ArrayList<E>
// myAdapter : Adapter
final int position = myListView.getPositionForView((View) view.getParent());
myDataList.remove(position);
myAdapter.notifyDataSetChanged();

}

위 함수를 응용하신다면 쉽게 해결 할 수 있을것입니다!

반응형