關(guān)于android:listviewgetChildAt為空的解釋

今天遇到了一個很奇怪的問題,我所設(shè)定的一個listview 有10個item,當(dāng)我的 list.getCount 的數(shù)量對其進行for 循環(huán)的時候,當(dāng)?shù)降?個item的時候,得到的view對象卻是null,這讓我很費解,經(jīng)過一番查詢,明白了這個問題是怎么回事,與大家分享下:

創(chuàng)新互聯(lián)建站主營??稻W(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),保康h5重慶小程序開發(fā)公司搭建,??稻W(wǎng)站營銷推廣歡迎保康等地區(qū)企業(yè)咨詢

   關(guān)于android:listview  getChildAt 為空的解釋

如圖片紅框部分的listview部分。這其實涉及到android的listview控件的內(nèi)存處理問題:當(dāng)我們加載listview時,如果這個listview的數(shù)據(jù)量比較多,它是顯示不完全的,但這時是否是所有的數(shù)據(jù)都已經(jīng)加載?答案是否定的,listview加載的數(shù)量是當(dāng)前屏幕展示的數(shù)量再多四個,分別是上下各自緩沖兩個,這就是問題所在。當(dāng)我listview有10個item,但我當(dāng)前的布局最多顯示4個,所以當(dāng)去得到第七個的時候,會出現(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(); \\獲得第一個可見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);

            }

            }

        }

}

};

解決思路就是加上如上紅字部分,獲得屏幕的第一個可見item的index,然后用當(dāng)前的child的index減去這個值就可以得到當(dāng)前的對象了。

新聞標(biāo)題:關(guān)于android:listviewgetChildAt為空的解釋
文章位置:http://muchs.cn/article2/gphgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護虛擬主機、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)