listView 条目错乱的问题

来源:互联网 发布:suse linux配置ntp 编辑:程序博客网 时间:2024/05/16 07:36

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

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

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

问题1解决方案:

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

@Overridepublic 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"));}
然后就正常了如图:



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

参考自:点击打开链接


1 0
原创粉丝点击