android中ListView多次刷新重復(fù)執(zhí)行g(shù)etView的解決方法
更新時(shí)間:2013年06月04日 16:10:34 作者:
以前倒是沒(méi)有注意listview的getView會(huì)重復(fù)執(zhí)行多次,在測(cè)試的時(shí)候去斷點(diǎn)跟蹤,發(fā)現(xiàn)同一條數(shù)據(jù)不斷的重復(fù)執(zhí)行,下面與大家分享下正確的解決方法,希望對(duì)你有所幫助
以前倒是沒(méi)有注意listview的getView會(huì)重復(fù)執(zhí)行多次,這次因?yàn)椴季直容^復(fù)雜,所以在測(cè)試的時(shí)候去斷點(diǎn)跟蹤,發(fā)現(xiàn)同一條數(shù)據(jù)不斷的重復(fù)執(zhí)行。覺(jué)得很奇怪,于是上網(wǎng)搜索了一下。網(wǎng)上的解釋基本一致,就是ListView布局時(shí)height和width都不是fill_parent,導(dǎo)致不斷計(jì)算高度,不斷刷新。或者說(shuō)它的父容器沒(méi)有設(shè)置成fill_parent。
可以布局太復(fù)雜的情況下,全部按照f(shuō)ill_parent去調(diào)整不現(xiàn)實(shí)。所以想了另一種方案,就是動(dòng)態(tài)固定高度。
在程序運(yùn)行后,固定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(); //需要設(shè)置的listview的高度,你可以設(shè)置成一個(gè)定值,也可以設(shè)置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中執(zhí)行,需要做延時(shí)處理,否則高度為0
listView.setLayoutParams(params);
}
這樣發(fā)現(xiàn)ListView刷新的速度大幅加快。同事也解決了Item中文本輸入EditText中如果存在addTextChangedListener(new TextWatcher()的監(jiān)聽(tīng),導(dǎo)致多次執(zhí)行監(jiān)聽(tīng)代碼的情況。
可以布局太復(fù)雜的情況下,全部按照f(shuō)ill_parent去調(diào)整不現(xiàn)實(shí)。所以想了另一種方案,就是動(dòng)態(tài)固定高度。
在程序運(yùn)行后,固定ListView的高度,然后再初始化Item信息。
復(fù)制代碼 代碼如下:
private void fixedListView(){
listView = (ListView) findViewById(R.id.listview);
ViewGroup.LayoutParams params = listView.getLayoutParams();
layout = (HorizontalScrollView) findViewById(R.id.layout);
params.height = layout.getHeight(); //需要設(shè)置的listview的高度,你可以設(shè)置成一個(gè)定值,也可以設(shè)置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中執(zhí)行,需要做延時(shí)處理,否則高度為0
listView.setLayoutParams(params);
}
這樣發(fā)現(xiàn)ListView刷新的速度大幅加快。同事也解決了Item中文本輸入EditText中如果存在addTextChangedListener(new TextWatcher()的監(jiān)聽(tīng),導(dǎo)致多次執(zhí)行監(jiān)聽(tīng)代碼的情況。
您可能感興趣的文章:
- Java判斷List中有無(wú)重復(fù)元素的方法
- 獲取python的list中含有重復(fù)值的index方法
- python生成不重復(fù)隨機(jī)數(shù)和對(duì)list亂序的解決方法
- Java中ArrayList去除重復(fù)元素(包括字符串和自定義對(duì)象)
- java 查找list中重復(fù)數(shù)據(jù)實(shí)例詳解
- list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)
- java正則表達(dá)式實(shí)現(xiàn)提取需要的字符并放入數(shù)組【ArrayList數(shù)組去重復(fù)功能】
- Android中ListView異步加載圖片錯(cuò)位、重復(fù)、閃爍問(wèn)題分析及解決方案
- 2種Java刪除ArrayList中的重復(fù)元素的方法
- 兩個(gè)List集合取相同重復(fù)數(shù)據(jù)的方法
相關(guān)文章
Android Studio一直處于Building的兩種解決方法
很多朋友都遇到過(guò)打開(kāi)別人的項(xiàng)目一直處于Building‘XXX’Gradle project info的情況。下面小編給大家?guī)?lái)了Android Studio一直處于Building的解決方法,感興趣的朋友一起看看吧2018-08-08Android答題APP的設(shè)計(jì)與實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Android答題APP的設(shè)計(jì)與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Android開(kāi)發(fā)仿bilibili刷新按鈕的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 仿bilibili刷新按鈕的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10Android自動(dòng)填充短信驗(yàn)證碼功能(demo)
在項(xiàng)目開(kāi)發(fā)中為了給用戶帶來(lái)極好的體驗(yàn)效果,通常需要實(shí)現(xiàn)驗(yàn)證碼的自動(dòng)填充功能,怎么實(shí)現(xiàn)呢?今天小編給大家分享Android自動(dòng)填充短信驗(yàn)證碼功能的實(shí)現(xiàn)方法,需要的朋友參考下吧2017-02-02詳解Android數(shù)據(jù)存儲(chǔ)之SQLCipher數(shù)據(jù)庫(kù)加密
對(duì)于已經(jīng)ROOT的手機(jī)來(lái)說(shuō)的沒(méi)有任何安全性可以,一旦被利用將會(huì)導(dǎo)致數(shù)據(jù)庫(kù)數(shù)據(jù)的泄漏,本篇文章主要介紹了Android數(shù)據(jù)存儲(chǔ)之SQLCipher數(shù)據(jù)庫(kù)加密,具有一定的參考價(jià)值,有需要的可以了解一下。2016-12-12Android用TextView實(shí)現(xiàn)跑馬燈效果代碼
大家好,本篇文章主要講的是Android?TextView實(shí)現(xiàn)跑馬燈效果代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Android TV 焦點(diǎn)框移動(dòng)的實(shí)現(xiàn)方法
本篇文章主要介紹了Android TV 焦點(diǎn)框移動(dòng)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06