奇葩問題:ListView中Item與Item中的Button不能單擊問題


android中ListView是一個經常要用到的一個組件,用到該組件時經常會碰到ListView的Item和Item中的Button不能單擊的問題。

本人在使用時同樣也遇到過這樣的情況,共有三種情況,總結如下:

情況一:焦點問題: 設置android:descendantFocusability="blocksDescendants"> 和android:focusable="false"

該情況比較常見,在網上都可以搜索到相關的解決辦法,不在這過多的介紹,先給出我以前總結的方法的連接。

http://blog.csdn.net/competerh_programing/article/details/8028764

情況二:由Listview的android:layout_height="wrap_content"引起。

此類情況完全是由Listview的android:layout_height="wrap_content"引起,修改成一個確定的值就可以解決。詳細的請看以下連接

http://blog.csdn.net/competerh_programing/article/details/7731599

情況三:通過Handler適時更新listview的適配器引起

這是我最近才遇到的一種情況:在前面的兩種情況都解決的情況下,我的listview沒有出現單擊item或button不響應的現象。

現在是要做出這樣的效果,單擊item后讓其顯示高亮,我在listview的適配器中加了一個整形參數標志選中的item並讓其背景色高亮,然后再item單擊事件中傳入該參數,並通過消息隊列通知Handler讓Listview的adapter更新數據后選中的itme則顯示高亮。

這樣做以后,就導致了如下情況:item一直可以單擊響應,在item單擊幾次后在單擊button,button沒有了響應,再單擊item或其他button,則觸發出之前沒有響應的單擊事件。

然后嘗試各種單擊后,設置item不能獲取焦點,都不管用。最后發現只有將handler中listview的adapter數據更新注銷掉才解決。

其中的緣由還未找到,現共享給大家希望能幫到各位,麻煩知道的大蝦可以給出解釋。

情況三的解決辦法:今天又碰到與三類似的情況,這次逃避不了,只有硬着頭皮解決。我仔細看看了代碼,用Handler更新Listview內容代碼的:

noticeAdapter.setInfoList(noticeList);
noticeAdapter.notifyDataSetChanged();老覺着不對勁,然后再加了一句lvNotice.setAdapter(noticeAdapter);調試通過,問題解決。

之前在handler中更新listview后一直都保留setAdapter(noticeAdapter)后來刪除發現也沒什么影響。現在問題出現了希望給大家以提醒。

 

最后說明一下,我遇到是屬於第二種情況  把Listview的android:layout_height="wrap_content"改為fill_parent 就好了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM