1. 程式人生 > >android之ListView多次呼叫getView解決辦法

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。

一些文章分析