Saya memiliki tempat di ListView
mana setiap elemen dalam daftar berisi TextView dan dua Tombol berbeda. Sesuatu seperti ini:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Dengan kode ini saya dapat membuat OnItemClickListener
untuk seluruh item:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Namun, saya tidak ingin seluruh item dapat diklik, tetapi hanya dua tombol dari setiap elemen daftar.
Jadi pertanyaan saya adalah, bagaimana cara menerapkan onClickListener untuk dua tombol ini dengan parameter berikut:
int button
(tombol elemen mana yang telah diklik)int position
(yang merupakan elemen dalam daftar di mana klik tombol terjadi)
Pembaruan: Saya menemukan solusi seperti yang dijelaskan dalam jawaban saya di bawah ini. Sekarang saya dapat mengklik / mengetuk tombol melalui layar sentuh. Namun, saya tidak dapat secara manual memilihnya dengan trackball. Selalu memilih seluruh item daftar dan dari sana langsung menuju ke item daftar berikutnya mengabaikan tombol, meskipun saya mengatur .setFocusable(true)
dan setClickable(true)
untuk tombol di getView()
.
Saya juga menambahkan kode ini ke adaptor daftar kustom saya:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Hal ini menyebabkan tidak ada item daftar yang dapat dipilih sama sekali. Tapi itu tidak membantu membuat tombol bersarang bisa dipilih.
Adakah yang punya ide?