成都网站建设设计

将想法与焦点和您一起共享

关于android:listviewgetChildAt为空的解释-创新互联

今天遇到了一个很奇怪的问题,我所设定的一个listview 有10个item,当我的 list.getCount 的数量对其进行for 循环的时候,当到第6个item的时候,得到的view对象却是null,这让我很费解,经过一番查询,明白了这个问题是怎么回事,与大家分享下:

创新互联建站是一家集网站建设,沧县企业网站建设,沧县品牌网站建设,网站定制,沧县网站建设报价,网络营销,网络优化,沧县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

  关于android:listview  getChildAt 为空的解释

如图片红框部分的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

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减去这个值就可以得到当前的对象了。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:关于android:listviewgetChildAt为空的解释-创新互联
本文URL:http://chengdu.cdxwcx.cn/article/cepgpc.html