android之ListView多次調用getView解決辦法

前言

最近遇到一個bug,寫了一個簡單的listview,不過listview的條目內含的控件較多(且控件的狀態即顯隱狀態也比較複雜),結果就導致了,一個bug,例如我的item只有3個,但是getView居然被調用了幾十次。實在是驚人的很。這也間接導致條目的顯示/隱藏狀態出現了混亂。

解決辦法

問題的發現過程

由於上述listv條目中控件的顯隱狀態出現混亂,當時很納悶,但是debug後發現getView的調用次數不合乎常理。雖然不知道顯隱狀態出現錯亂於getView被多次調用是否有關係,但是依然百度了一下:“adapter多次調用getView”,之後發現遇到這個問題的不在少數。(notify正常,初始化出現錯亂)

產生多次調用的根源

之所以多次調用getView原因就是自己在寫佈局時listview(使用了listview)的大小不固定,而添加adapter後,listview的條目尺寸不確定,這就導致了listview需要不斷的測量。

解決方法

解決方法,就是listview的大小要確定,例如使用match_parent。
方法一:
在listview外面套一層RelativeLayout,將listview高度設置爲match_parent。

方法二:
在listview外面套一層 LinearLayout,將listview高度設置爲0dip。weight設爲1。

一些文章分析

android listview 連續調用 getview問題分析及解決。
ListView設置adapter時getView被多次調用
android ListView 在初始化時多次調用getView()原因分析
Android: Gallery的adapter中getView方法被執行多次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章