今天遇到了一个很奇怪的问题,我所设定的一个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减去这个值就可以得到当前的对象了。


更多相关文章

  1. android UI 设计注意事项
  2. 关于Android5.0以上屏幕截图探索总结
  3. Android(安卓)三大图片加载框架的对比——ImageLoader,Picasso,G
  4. Android(安卓)WebView 开发中遇到的那些事儿
  5. Android开发者福利之--------Android(安卓)5.0 API
  6. Android:这是一份全面 & 详细的Webview使用攻略
  7. Android版本谷歌地图改版:屏幕下方增加一个新的信息栏
  8. 安卓系统运行机制
  9. 再议屏幕适配

随机推荐

  1. android窗口管理机
  2. Android高手应该精通哪些内容
  3. 【阿里聚安全·安全周刊】500万台Android
  4. Service深入分析
  5. Android中读取电话本Contacts联系人的所
  6. MIUI 惊艳锁屏样式5款[Android] | 小众软
  7. android 手势检测
  8. GMS认证-Android(安卓)VTS测试
  9. Android(安卓)TabHost布局
  10. Android(安卓)软键盘imeOptions(Done)的用