今天遇到了一個(gè)很奇怪的問(wèn)題,我所設(shè)定的一個(gè)listview 有10個(gè)item,當(dāng)我的 list.getCount 的數(shù)量對(duì)其進(jìn)行for 循環(huán)的時(shí)候,當(dāng)?shù)降?個(gè)item的時(shí)候,得到的view對(duì)象卻是null,這讓我很費(fèi)解,經(jīng)過(guò)一番查詢,明白了這個(gè)問(wèn)題是怎么回事,與大家分享下:
創(chuàng)新互聯(lián)建站主營(yíng)??稻W(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),保康h5重慶小程序開(kāi)發(fā)公司搭建,??稻W(wǎng)站營(yíng)銷推廣歡迎??档鹊貐^(qū)企業(yè)咨詢
如圖片紅框部分的listview部分。這其實(shí)涉及到android的listview控件的內(nèi)存處理問(wèn)題:當(dāng)我們加載listview時(shí),如果這個(gè)listview的數(shù)據(jù)量比較多,它是顯示不完全的,但這時(shí)是否是所有的數(shù)據(jù)都已經(jīng)加載?答案是否定的,listview加載的數(shù)量是當(dāng)前屏幕展示的數(shù)量再多四個(gè),分別是上下各自緩沖兩個(gè),這就是問(wèn)題所在。當(dāng)我listview有10個(gè)item,但我當(dāng)前的布局最多顯示4個(gè),所以當(dāng)去得到第七個(gè)的時(shí)候,會(huì)出現(xiàn)得到的item為空的現(xiàn)象。解決辦法如下:
public class MeasureitemListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
firstlocation=arg2;
datalDialog= new LoadDialogDao(getActivity(),"數(shù)據(jù)加載中...");
datalDialog.show();
for(int i=0;i<measure_type_list.getCount();i++){
int firvisible=measure_type_list.getFirstVisiblePosition(); \\獲得第一個(gè)可見(jiàn)item的index
View v=measure_type_list.getChildAt(i-firvisible);
if(v!=null){
if (arg2 == i) {
v.setBackgroundColor(R.color.lightblue);
} else {
v.setBackgroundResource(R.drawable.list_item_selector);
}
}
}
}
};
解決思路就是加上如上紅字部分,獲得屏幕的第一個(gè)可見(jiàn)item的index,然后用當(dāng)前的child的index減去這個(gè)值就可以得到當(dāng)前的對(duì)象了。
新聞標(biāo)題:關(guān)于android:listviewgetChildAt為空的解釋
文章位置:http://chinadenli.net/article2/gphgoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)