listView 条目错乱的问题

listView 在利用ViewHolder后,据说提高了20%的性能,不管数据准不准确,确实的提高了.但是利用ViewHolder 的时候总会出现各种各样的问题

问题1:异步加载图片的时候,会出现图片显示错乱,

问题2:加载背景的时候,滑动过快,会出现条目错乱.

问题1解决方案:

我写一段伪代码,作为范例:

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		if (convertView == null) {
                  View view = View.inflate(context,
                    R.layout.item_demo, null);

                 holder = new ViewHolder(); 
                 holder.imageView = view.(ImageView) view
                    .findViewById(R.id.imageView);// 图片id

 view.setTag(holder);

  } else {
view = covertView;
holder = view.getTag();
}
//list是,构造方法传来的图片url集合
holder.imageView.setTag(list.get(position).imageUrl);
if((String)holder.getTag()== list.get(position).imageUrl) {
//加载图片
}
  return view;}class ViewHolder {ImageView imageView;}


 

问题2解决方案:

当我们想做出,一个listView,背景偶数,无背景,奇数有背景.

我们在判断的时候,千万不能用,position%2 ==1 或者 0 来判断,通过打印log,你会发现,position始终就是,0到 手机屏幕显示的条目数

判断应该通过全局的变量list来判断:(切记通过全局变量判断)

	if (list.get(position).id % 2==1 ) {
			holder.lout.setBackgroundColor(Color.parseColor("#FFFFFF"));
		}

但是,你会发现当你快速滑动时,背景又出错了如图:


解决办法是:在背景选择时,一定记得else 加上:


if (list.get(position).id % 2==1 ) {
			holder.lout.setBackgroundColor(Color.parseColor("#FFFFFF"));
		}else {
			holder.lout.setBackgroundColor(Color.parseColor("#D7D7D7"));
		}
然后就正常了如图:



如果你觉得,解决了你问题,不要吝惜,点个赞吧.

参考自:点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值