Android ListView 位置错乱问题

问题:

使用 class ViewHolder {

public TextViewitemName;

public ImageViewaddBt;

public ImageViewinfo;

publicTextView dateupinfoView;

publicTextView stateLabelView;

publicTextView dateLabel;

publicTextView stateLabel;

public RelativeLayout layoutRe;

}

来提高listview的滑动效率,会引发一些问题,比如位置错乱,提示信息错乱等;原因是内部实现异步加载引起的(欢迎高手指明);

解决方案:

1:使用view的setTag()方法来记录当前item的位置信息;

2:item展示具体值的时候,根据位置信息来取到对应的 model/bean/object,有很多种叫法,你懂的;

if(convertView ==null) {

                  viewHolder =newViewHolder();

                  convertView = View.inflate(context, R.layout.m3_activity_indicator_item,null);

                   viewHolder.addBt= (ImageView) convertView.findViewById(R.id.addBt);

                  viewHolder.itemName= (TextView) convertView.findViewById(R.id.itemName);

                      ..... .....

                convertView.setTag(viewHolder);

                viewHolder.info.setTag(position);

                 viewHolder.addBt.setTag(position);

                  viewHolder.dateupinfoView.setTag(position);

                  viewHolder.stateLabelView.setTag(position);

}else{

                  viewHolder = (ViewHolder)convertView.getTag();

                   viewHolder.info.setTag(position);

                   viewHolder.addBt.setTag(position);

                   viewHolder.dateupinfoView.setTag(position);

                   viewHolder.stateLabelView.setTag(position);

}

//伪代码

int num=Integer.valueOf(viewHolder.dateupinfoView.getTag()+"");//获取到初始化item时的位置值

Bean item =list.get(num);  //list是传递过来的数据源,获取具体的item;

viewHolder.stateLabelView.setText(item.getString("key-Str"))//应该看的懂


这样就可以高效率加载缓存的item,而不会导致位置错乱!  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容