안드로이드

안드로이드 ListView 리스트뷰 item 아이템 터치가 안될 때, setOnItemClickListener가 안먹힐 때

알통몬_ 2017. 3. 16. 11:33
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

안드로이드 ListView를 사용하다 보면 setOnItemClickListener가 정상적으로 동작하지 않을 때가 있습니다.

네... 바로 제가 어제 그랬습니다 ㅎㅎ


제대로 동작하지 않는 이유는 여러가지가 있겠지만 대표적으로,


아래 코드처럼 ListView의 아이템으로 들어가는 xml에서 

Button이나 ImageButton이 있으면 포커스를 이놈들이 가져가서

아이템 클릭 리스너가 제대로 동작하지 않을 수 있다고 하네요~

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="72dp">
<TextView style="@style/employee_row"
android:id="@+id/employeeName"/>
<TextView style="@style/employee_row"
android:id="@+id/employeeFee"/>
<ImageButton
android:contentDescription="@string/noImage"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#00000000"
android:src="@drawable/ic_keyboard_arrow_right_black_48dp"/>

</LinearLayout>



해결방법은 Button대신 TextView로 ImageButton 대신 ImageView로 대체하면

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="72dp">
<TextView style="@style/employee_row"
android:id="@+id/employeeName"/>
<TextView style="@style/employee_row"
android:id="@+id/employeeFee"/>
<ImageView
android:contentDescription="@string/noImage"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#00000000"
android:src="@drawable/ic_keyboard_arrow_right_black_48dp"/>

</LinearLayout>

setOnItemClickListener 가 정상 동작하는 것을 확인할 수 있습니다.

이상입니다!

반응형