這是處理ListView中onItemClick事件中視圖的最佳做法的請求。使用ListView和複雜佈局處理onItemClick事件
我的ListView中的每個視圖都包含一個ImageView,一些TextViews和一個包裹在RelativeLayout中的複選框。在任何地方選擇的項目視圖上,我希望根據需要勾選/取消選中複選框。我還想要選擇更改視圖樣式,即通過着色筆畫突出顯示項目。
我目前的問題與其他人一樣。由於ListView的回收,如果我抓取傳遞給onItemClick的視圖並設置背景資源或複選框選中的值,它也會更改當前未呈現的視圖。我想知道實現這一目標的最佳方式。
我知道有一種模式可以通過實現onClickListener直接處理ArrayAdapter中的CheckBox事件,但我相信這隻會響應直接選擇CheckBox;它會忽略對視圖其餘部分的任何點擊。另外,如果CheckBox onClick事件被觸發,它將消耗點擊事件,因此onItemClick不會觸發,我需要設置我的數據。
此外,使用CheckedTextView將不起作用,因爲它位於RelativeLayout內,它不會將選中的事件傳遞給ListView。有一個帖子建議創建自己的CheckedViewLayout,它實現了Checkable來處理View checked事件。如果我繼續這樣做,是否可以在XML中引用我的新佈局類,還是必須再次設計我的每個視圖,但使用Java代碼?
如果其他人有更好的解決方案,請讓我知道。
如果是真的,只改變當前位置的BG http://stackoverflow.com/questions/12051813/android-listactivity-oncheckedchangelistener/12052585#12052585通過@Mit布哈特 –
鑑於答案會爲你工作,OnItemClick和chkbox onClick將工作,因爲他們使用Chkbox點擊查看持有人類像holder.name.setOnClickListener。(在AdpterView)所以它一定會解決您的問題。 – MDroid
MDroid,它不會。看到我的迴應。請記住,我也有一個ImageView。這實質上是一個手機聯繫人ListView。 –