Saya memiliki ListView dengan pendengar untuk klik yang lama dan klik biasa.
Mengapa, ketika saya menekan lama item daftar, event klik biasa dipanggil juga?
Saya perlu memiliki dua fungsi terpisah untuk klik yang berbeda.
sumber
Saya memiliki ListView dengan pendengar untuk klik yang lama dan klik biasa.
Mengapa, ketika saya menekan lama item daftar, event klik biasa dipanggil juga?
Saya perlu memiliki dua fungsi terpisah untuk klik yang berbeda.
Dari Pendengar Acara :
onLongClick () - Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan acara dan tidak boleh dibawa lebih jauh. Artinya, mengembalikan true untuk menunjukkan bahwa Anda telah menangani kejadian tersebut dan harus berhenti di sini; return false jika Anda belum menanganinya dan / atau acara harus dilanjutkan ke listener on-click lainnya.
Apakah Anda kembali true
dari Anda onLongClick()
dan masih mendapatkan peristiwa klik biasa?
Diedit untuk menambahkan : Untuk ListView, Anda mungkin menggunakan OnItemLongClickListener
. The onItemLongClick()
ada menggunakan nilai kembali boolean mirip dengan menunjukkan apakah itu dikonsumsi acara tersebut.
myListView.setOnItemLongClickListener(this);
opsi, Anda harus Mengganti fungsipublic boolean onItemLongClick(...)
. Di sini Anda hanya perlureturn true
yang menunjukkan bahwa LongClick telah diaktifkan dan akan membatalkan pemicu pada klik biasa. Jika Anda mengembalikan false maka itu akan memicu klik biasa juga.Mengulangi jawaban dalam istilah yang lebih sederhana:
Diberikan:
return true
berarti acara tersebut dikonsumsi. Itu ditangani. Tidak ada peristiwa klik lain yang akan diberitahukan.return false
berarti acara tersebut tidak dikonsumsi. Peristiwa klik lainnya akan terus menerima pemberitahuan.Jadi jika Anda tidak ingin
onClick
juga dipicu setelahonLongClick
, maka Anda harusreturn true
darionLongClick
acara tersebut.sumber
Pastikan Anda mengganti metode
OnClickListener
AndaonClick
. Juga pastikan Anda mengganti metodeOnLongClickListener
AndaonLongClick
. Dan pastikan bahwaonLongClick
metode Anda kembalitrue
, karena ini akan menggunakan fileonClick
.sumber
Anda dapat mengimplementasikan
setOnLongClickListener
pembuatan instancenew View.OnClickListener()
ataunew View.OnLongClickListener()
, jika Anda membuat Long click dan mengimplementasikan OnclickListener normal, Anda akan mendapatkan error ini karena satu klik yang mengaktifkan metode ini. Anda harus menggunakannew View.OnLongClickListener()
hanya untuk menangkap klik panjangsumber