Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android中ListView多次刷新重復執行getView的解決方法

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

編輯:關於Android編程

以前倒是沒有注意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()的監聽,導致多次執行監聽代碼的情況。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved