当我们使用Listview 列表显示数据稍多些进行滑动浏览时,图片或者其他数据出现了错位或重复。遇到这样问题,我们不必在单独给某一个ImageView控件去setTag(),我们使用HashMap来解决问题。(ListView volleyImageLoader 加载图片重复也可以试试)
HashMap根据position存储item对应的view ,然后在从map中取view使用。如何写,如下操作
1.定义Map(写在自定义适配器类中)
Map<Integer,View> map = new HashMap<Integer,View>(); // key :position value :item view
2.map存储值及使用(写在自定义适配器类中getView())
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(map.get(position) == null){ // 判断position对应view是否为空
holder = new ViewHolder();
convertView = View.inflater(context,R.layout.textlayout,null);
holder.v = (ImageView)convertView.findView(R.id.v);
map.put(position,convertView); // 将convertView 存入map
convertView.setTag(holder);
}else{
convertView = map.get(position); // 从map中取出view
holder = (ViewHolder)convertView.getTag();
}
return convertView;
}
以上代码编写就可以解决ListView滑动时数据重复错误。