ViewHolder数据错乱BUG
需求是这样的,在列表中用一个图标标示某个item是已经被接下或者完成的任务。
对于文件有这样的操作,进入列表后第一页面展示正常,但是加载更多后同样位置出现了同样的标志。这不是我想要的效果
我的解决办法是在viewholder绑定控件并附值后,添加一个else方法复写之前的内容。
@Override public View getView(int position, View convertView, ViewGroup parent) { //获取纳秒时间 更加精确 ViewHolder holder = new ViewHolder(); if (convertView == null) { //由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null convertView = mLayoutInflater.inflate(R.layout.tasklistitem, null); holder.title = (TextView) convertView.findViewById(R.id.task_title); holder.explain = (TextView) convertView.findViewById(R.id.task_explain); holder.price = (TextView) convertView.findViewById(R.id.task_price); holder.faraway = (TextView) convertView.findViewById(R.id.task_distance); holder.zhuangtai = (ImageView) convertView.findViewById(R.id.task_zhuangtai_image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // 取出bean对象 ItemBean bean = mDataList.get(position); // 设置控件的数据 holder.title.setText(bean.itemTitle); holder.explain.setText(bean.itemContent); holder.price.setText(bean.itemPrice); holder.faraway.setText(bean.itemFaraway); if(!bean.itemReceiver.equals("null")){ holder.zhuangtai.setImageResource(R.mipmap.aboutus1); }else{ holder.zhuangtai.setImageResource(R.mipmap.studio); } return convertView; }
如上图。