首頁  >  文章  >  Java  >  android中ListView多次刷新重複執行getView的解決方法

android中ListView多次刷新重複執行getView的解決方法

高洛峰
高洛峰原創
2017-01-20 15:30:001658瀏覽

以前倒是沒有註意listview的getView會重複執行多次,這次因為佈局比較複雜,所以在測試的時候去斷點跟踪,發現同一條數據不斷的重複執行。覺得很奇怪,於是上網搜尋了一下。網路上的解釋基本上一致,就是ListView佈局時height和width都不是fill_parent,導致不斷計算高度,不斷刷新。或者說它的父容器沒有設定成fill_parent。 

可以佈局太複雜的情況下,全部都按照fill_parent去調整不切實際。所以想了另一個方案,就是動態固定高度。 
在程式運作後,固定ListView的高度,然後再初始化Item資訊。 

private void fixedListView(){ 
listView = (ListView) findViewById(R.id.listview); 
ViewGroup.LayoutParams params = listView.getLayoutParams(); 
layout = (HorizontalScrollView) findViewById(R.id.layout); 
params.height = layout.getHeight(); //需要设置的listview的高度,你可以设置成一个定值,也可以设置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中执行,需要做延时处理,否则高度为0 
listView.setLayoutParams(params); 
}

這樣發現ListView刷新的速度大幅加快。同事也解決了Item中文字輸入EditText中如果存在addTextChangedListener(new TextWatcher()的監聽,導致多次執行監聽程式碼的情況。

更多android中ListView多次刷新重複執行getView的解決方法相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn