Android中ListView點選onItemClick不響應,onTouch和onItemLongClick響應
阿新 • • 發佈:2018-11-12
這裡先說以下原因,我這裡的ListView不能點選,可能是跟執行緒更新UI有關,與獲取焦點之類無關。
程式裡的ListView設定了點選監聽setOnItemClickListener,長按監聽setOnItemLongClickListener,觸控監聽setOnTouchListener。
返回值 | 作用 |
true | 不能向onItemLongClick,onItemClick傳遞(不能響應點選、長按) |
false | 可以繼續向onItemLongClick,onItemClick傳遞(能響應點選、長按) |
返回值 | 作用 |
true | 不能向onItemClick傳遞(不能響應點選) |
false | 可以繼續向onItemClick傳遞(能響應點選) |
這裡onTouch返回值設定為false,onItemLongClick返回值設定為true。
也就是觸控-->長按,觸控-->點選兩種模式。
之前onTouch沒加入處理函式時,一切正常,可觸控、點選、長按,效果如上列出來的兩種模式。
問題:
解決:onTouch中擡起(MotionEvent.ACTION_UP)時,傳送handler訊息,在handler中進行進行列表更新(方法與上一樣),列表就可以點選了,觸控和長按都沒問題。
分析:呼叫方法都在onTouch中,區別就是一個是直接呼叫adapter中的notifyDataSetChanged()進行列表更新,一個是傳送handler訊息,再呼叫adapter中的notifyDataSetChanged()進行列表更新。原因可能是在onTouch呼叫此方法不在主執行緒,不能進行UI更新。(自己猜測,如有想法請指教!)