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ì)算高度,不斷刷新?;蛘哒f(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)文章
完美解決客戶端webview持有的頁(yè)面緩存,不會(huì)立即釋放的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決客戶端webview持有的頁(yè)面緩存,不會(huì)立即釋放的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
解決Android Studio 格式化快捷鍵和QQ 鎖鍵盤(pán)快捷鍵沖突問(wèn)題
每次打開(kāi)qq使用android studio格式化的快捷鍵Ctrl + Alt +L時(shí),總是出現(xiàn)qq鎖鍵盤(pán)提示,怎么回事呢?下面小編給大家?guī)?lái)了android studio格式化的快捷鍵和qq快捷鍵之間的沖突的處理方法,需要的朋友參考下吧2017-12-12
Android監(jiān)聽(tīng)輸入法彈窗和關(guān)閉的實(shí)現(xiàn)方法
用過(guò)ios的都知道ios上輸入法關(guān)閉的同時(shí)會(huì)自動(dòng)關(guān)閉輸入框,那么在android上如何實(shí)現(xiàn)監(jiān)聽(tīng)輸入法彈出和關(guān)閉呢?接下來(lái)通過(guò)本文給大家分享一種可靠的實(shí)現(xiàn)方式2016-11-11
Android activity堆棧及管理實(shí)例詳解
這篇文章主要介紹了Android activity堆棧及管理實(shí)例詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,對(duì)android activity堆棧相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-09-09
一文詳解Jetpack?Android新一代導(dǎo)航管理Navigation
這篇文章主要為大家介紹了Jetpack?Android新一代導(dǎo)航管理Navigation詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Android仿簡(jiǎn)書(shū)搜索框效果的示例代碼
本篇文章主要介紹了Android仿簡(jiǎn)書(shū)搜索框效果的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
詳解Android Libgdx中ScrollPane和Actor事件沖突問(wèn)題的解決辦法
這篇文章主要介紹了詳解Android Libgdx中ScrollPane和Actor事件沖突問(wèn)題的解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09

