android listview使用glide异步加载图片错位,闪烁问题

参考网上方法:https://www.jianshu.com/p/f5593b87ee07

// 获取图像控件的Tag
String tag = (String) holder.imgView.getTag();     
// 如果不一样,则设置为默认图片  
if (!TextUtils.equals(mDataList.get(position).getUrl(), tag)) {                       
    holder.imgView.setImageResource(R.drawable.ic_launcher); 
} 
// 使用Glide展示图像 
Glide.with(DemoActivity.this)
    .load(mDataList.get(position).getUrl())
    .into(new SimpleTarget() {
        @Override
        public void onResourceReady(GlideDrawable resource, 
                GlideAnimation glideAnimation) {
            holder.imgView.setTag(mDataList.get(position).getUrl());                                
            holder.imgView.setImageDrawable(resource);
        }
    });

整体不在闪烁,但是只有第一张图片是显示不正确的。后来又在这个基础上修改如下:


// 使用Glide展示图像 
holder.imgView.setTag(R.id.imageloader_uri,mDataList.get(position).getUrl());
Glide.with(DemoActivity.this)
    .load(mDataList.get(position).getUrl())
    .into(new SimpleTarget() {
        @Override
        public void onResourceReady(GlideDrawable resource, 
                GlideAnimation glideAnimation) {
              // 获取图像控件的Tag
              String tag = (String) holder.imgView.getTag(R.id.imageloader_uri);     
             // 如果一样,显示图片  
             if (TextUtils.equals(mDataList.get(position).getUrl(), tag)) {                       
                 holder.imgView.setImageDrawable(resource);
             }    
            
        }
    });

注意:

set和getTag的时候多设置了一个参数,R.id.imageloader_uri;

这里的R.id.imageloader_uri是values下新建的ids.xml:



   
    

问题解决了!

你可能感兴趣的:(android)