android - 在 ListView 中滚动时滑动重新加载内容

标签 android image android-glide

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

  1. 从服务器加载内容后,所有图像显示正常
  2. 然后向下滚动,新内容也显示正常
  3. 当我向后滚动时,所有图像都消失了,但 1 秒后我的图像再次出现,因为 Glide 加载它就像 Glide 之前从未加载它一样。
  4. 如果我有纵向方向,第一次加载时,它将填充布局宽度,但第二次(向后滚动 ListView )图像看起来更小而不是全宽。

这是我截取的代码

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 点,它就像一个闪烁,但 ImageView 失去了它的高度。图像下方的文本上升(就像那里没有 ImageView )然后在滑动完成加载图像后返回
在第 4 点,我的屏幕分辨率为 480 像素,我加载了 400 像素的图像(由服务器调整大小),如第二个滑动代码所示。

my question, how to remove this blinking image?

*我在低规范设备和高规范设备 (samsung tab s) 上运行它,并且在两个设备上都发生了闪烁

最佳答案

在适配器的 onCreateView 方法中使用 glide 之前尝试使用 if

像这样

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

所以如果图像已经加载该方法不返回 null

关于android - 在 ListView 中滚动时滑动重新加载内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598648/

相关文章:

java - 为什么我在 Java 应用程序中的图像在放大时会乱七八糟? (包括显示问题的代码)

android - 如何为 Glide 设置 OkHttpClient

android - Glide 4.3.1 : how to use error()?

java - Android Java 中的 sleep ()

java - 如何在不截断文件的情况下检查文件锁?

image - 在 stringgrid 单元格中插入图像

image - cv扩张/cv侵 eclipse : How to avoid connection between separated objects?

android - 如何使用数据类中的 Glide 绑定(bind) RecyclerView 图像

java - 不使用时如何在Android应用程序上停止GPS

android - Android 中的自定义 ListView,图标和文本不起作用