您好,登錄后才能下訂單哦!
今天遇到了一個很奇怪的問題,我所設定的一個listview 有10個item,當我的 list.getCount 的數量對其進行for 循環的時候,當到第6個item的時候,得到的view對象卻是null,這讓我很費解,經過一番查詢,明白了這個問題是怎么回事,與大家分享下:
如圖片紅框部分的listview部分。這其實涉及到android的listview控件的內存處理問題:當我們加載listview時,如果這個listview的數據量比較多,它是顯示不完全的,但這時是否是所有的數據都已經加載?答案是否定的,listview加載的數量是當前屏幕展示的數量再多四個,分別是上下各自緩沖兩個,這就是問題所在。當我listview有10個item,但我當前的布局最多顯示4個,所以當去得到第七個的時候,會出現得到的item為空的現象。解決辦法如下:
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減去這個值就可以得到當前的對象了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。