Merhaba arkadaşlar,
Custom şekilde ListView oluştururken listview in içindeki item lerde kimi zaman ( Button, ImageButton, TextView, ImageView vb. ) bileşenleri kullanırız. Daha sonra ListView mize tıklandığı anda çalıştırdığımız setOnItemClickListener() methodunun çalışmadığını görürüz.
ListView içinde ImageButton kullandım ve bahsetmiş olduğum tıklanma eventı çalışmadı bunu çözmek için yapmanız gereken ImageButton ları tanımladığınız layouta aşağıdaki kod parçasını vermektir.
android:descendantFocusability="blocksDescendants"
Örnek verecek olursak; ListView içinde yer alan item leri hazırlamak için oluşturduğumuz layouta baktığımızda yukarıdaki kod parçacığını ImageButton ları tutan layout a verdiğimi göreceksiniz.
listview_item.xml
<LinearLayout android:descendantFocusability="blocksDescendants" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentEnd="true"> <ImageButton android:id="@+id/call_image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageButton android:id="@+id/msg_image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
NOT: Aşağıdaki focusable kodlarını kullanıyorsanız eğer ImageButton için çalışmadığını ve ListView in setOnItemClickListener methodunun işlevsiz kaldığını göreceksiniz. Bu kod parçalarını ListView içinde ImageView kullanıyorsanız deneyebilirsiniz.
android:focusable="false" android:focusableInTouchMode="false"
6