关于通过设置imageview的tag避免listview图片错位的疑问
listview图片有可能出现错位,举一个应用场景,界面可以显示7条记录,都是异步从网络加载图片,当第1条记录对应的图片还没显示,而就往下滑动,导致第8条记录出现,而第8条记录的布局重用了第1条记录的,而且第8条对应的图片加载比第1条还快,所以出现了最下面的一条记录先显示第8张图片,再显示第1张图片的情况,出现这种情况的原因是重用了convertView,网上也有解决方案,就是说给imageview设置tag,完后进行比较,但是我看的几个帖子,要么只有文字描述,要么就是代码不全,要么就是东扯西拉没说到重点,具体要怎么比较并不清楚,我写了一个伪代码:
其中假设holder.image.setImageBitmap(BitmapFactory.decodeFile(url));这一句就能异步从网络加载图片(只是假设,实际肯定不行,但这不是我想知道的重点),我想问的是,怎么设置tag并比较可以避免上面那种场景的出现呢,我想过用
或者反之,但仔细一想都不行,请知道的人指点下
public class MyAdapter extends BaseAdapter {
private List<String> values;
private LayoutInflater mInflater;
public MyAdapter(Context context, List<String> values) {
this.values = values;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return values.size();
}
@Override
public Object getItem(int position) {
return values.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
String url = getItem(position).toString();
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item, null);
holder.image = (ImageView) convertView.findViewById(R.id.pic);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.image.setImageBitmap(BitmapFactory.decodeFile(url));
return convertView;
}
static class ViewHolder {
ImageView image;
}
}
其中假设holder.image.setImageBitmap(BitmapFactory.decodeFile(url));这一句就能异步从网络加载图片(只是假设,实际肯定不行,但这不是我想知道的重点),我想问的是,怎么设置tag并比较可以避免上面那种场景的出现呢,我想过用
if (holder.image.getTag() == url) {
holder.image.setImageBitmap(BitmapFactory.decodeFile(url));
}
holder.image.setTag(url);
或者反之,但仔细一想都不行,请知道的人指点下
...全文
相关推荐
ListView加载图片错位
基于Volley框架,解决listView加载图片发生错位,直接引用,简单好用,友好性高,开发简单。
Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼,下面通过本篇文章给大家分享Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案,需要朋友可以参考
关于ListView图片错乱解决方案
listview加载本地图片错乱解决方法
Android Listview 滑动过程中提示图片重复错乱的原因及解决方法
android中listview是比较常见的组件,通过本文主要给大家分析Android中Listview滚动过程造成的图片显示重复、错乱、闪烁的原因及解决方法,顺便跟进Listview的缓存机制,感兴趣的朋友一起看下吧
AndroidListView异步加载图片乱序问题,原因分析及解决方案.docx
AndroidListView异步加载图片乱序问题,原因分析及解决方案.docx


