Android 在listview中滚动时滑动重新加载内容
我使用glide加载内容,我使用它在一个页面中加载一个图像,如果我关闭并重新打开我的应用程序,效果会很好。问题是当我在listview上使用它时,glide总是重新下载它。Android 在listview中滚动时滑动重新加载内容,android,image,android-glide,Android,Image,Android Glide,我使用glide加载内容,我使用它在一个页面中加载一个图像,如果我关闭并重新打开我的应用程序,效果会很好。问题是当我在listview上使用它时,glide总是重新下载它。 详细错误步骤: 从服务器加载内容后,所有图像显示正常 然后我向下滚动,新内容也显示正常 当我向后滚动时,所有图像都消失了,但1s后我的图像再次出现,因为glide将其加载回去,就像glide以前从未加载一样 如果我有纵向,第一次加载,它将填充布局宽度,但第二次(向后滚动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点,它像一个闪烁,但图像视图失去了它的高度。图像下方的文本向上移动(如没有图像视图),然后在滑动完成加载图像后向下移动在第4点,我的屏幕分辨率是480px,我加载了400px的图像(由服务器调整大小),如第二个滑动代码所示 我的问题是,如何删除这个闪烁的图像 *我在低规格设备和高规格设备(samsung tab s)上运行此功能,两个设备都会闪烁尝试使用dontAnimate(),看看它是否解决了问题 如果问题仍然存在,那是因为Glide释放了先前图像的资源,以便加载后续图像
如果您有很多图像要加载到滚动列表中,并且需要支持低规格设备,那么fresco是一个更好的选择。它使用本机内存,并且具有更好的位图资源管理,特别是对于5.0之前的Android设备。在适配器中使用glide in
onCreateView
方法之前,请尝试使用if
像这样
if (yourImageView.getDrawable() == null)
// load your image
所以,如果图像已经加载,那么方法不会返回null,我只是尝试实现frescolib,根据需要工作。仅供参考,我认为在我的代码中关于图像高度的错误,直到读到这个@nameurname时才会离开之前加载的图像,这是错误的。视图保持架是重复使用的,无论视图保持架位于何处以及使用了哪些数据,都只能看到第一个加载的图像。@Sermilion当视图回收时,您可以从视图中删除图像,请显示onViewRecycled方法