溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于android:listview getChildAt 為空的解釋

發(fā)布時間:2020-06-27 18:09:38 來源:網絡 閱讀:4752 作者:manlianman 欄目:移動開發(fā)

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

   關于android:listview  getChildAt 為空的解釋

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

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,然后用當前的child的index減去這個值就可以得到當前的對象了。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI