Glide在listview中滚动重新加载内容

时间:2016-06-02 17:37:48

标签: android image android-glide

我正在使用滑动来加载内容,我使用它来加载页面中的1个图像,如果我关闭并重新打开我的应用程序,它的工作正常。问题是当我在listview上使用它时,滑动总是重新下载它 详细错误步骤:

  1. 从服务器加载内容后,所有图像显示正常
  2. 然后我向下滚动,新内容也显得正常
  3. 当我向后滚动时,所有图像都消失了,但是1秒后我的图像再次出现,因为滑行加载它就像滑翔一样从未加载过它。
  4. 如果我有纵向方向,第一次加载,它将填充布局宽度,但第二次(向后滚动列表视图)图像显示较小而不是全宽。
  5. 这是我的剪辑代码

    View view = convertView;
    if (null == view) {
        view = View.inflate(parent.getContext(), R.layout.item, null);
    }
    
    ImageView ivAvatar = (ImageView) view.findViewById(R.id.iv_avatar);
    ImageView ivPicture = (ImageView) view.findViewById(R.id.iv_picture);
    TextView tvName = ....
    ...
    tvName.setText(.....);  
    
    Glide.with(parent.getContext()).load(Api.getUrlImage(contents.get(position).avatar, 50, 0)).into(ivAvatar);
    Glide.with(parent.getContext()).load(Api.getUrlImage(contents.get(position).picture, 400, 0)).into(ivPicture);
    

    在第3点,它像一个闪烁,但图像视图失去了它的高度。图像下方的文字(如那里没有图像视图)然后在滑行完成加载图像后返回 在第4点,我的屏幕分辨率为480px,我加载400px图像(按服务器调整大小),如第二个滑行代码所示。

      

    我的问题,如何删除这个闪烁的图像?

    *我在低规格设备和高规格设备(三星标签)上运行此设备并在两个设备中都发生闪烁

2 个答案:

答案 0 :(得分:2)

尝试使用if之前在适配器中使用onCreateView方法滑行

像这样

if (yourImageView.getDrawable() == null)
// load your image 

所以如果图像已经加载,那么方法不会返回null

答案 1 :(得分:0)

尝试使用dontAnimate()并查看它是否解决了问题?

如果问题仍然存在,那么这是因为Glide释放了先前图像的资源以加载后续图像。

如果要在滚动列表中加载大量图像,并且需要支持低规格设备,那么壁画是更好的选择。 http://frescolib.org/index.html它使用本机内存,并且具有更好的位图资源管理,尤其适用于5.0之前的Android设备。