新聞中心
今天遇到了一個(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ǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),保康h5重慶小程序開(kāi)發(fā)公司搭建,保康網(wǎng)站營(yíng)銷(xiāo)推廣歡迎保康等地區(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 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ì)象了。
網(wǎng)頁(yè)題目:關(guān)于android:listviewgetChildAt為空的解釋
瀏覽路徑:http://www.ef60e0e.cn/article/gphgoc.html