android中ListView多次重新整理重複執行getView的解決方案

來源:互聯網
上載者:User

以前倒是沒有注意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()的監聽,導致多次執行監聽代碼的情況。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.