繁体   English   中英

Android:回收器视图项目中的图像在快速滚动时会随机播放很多

[英]Android: Images in recycler view item shuffle a lot on scrolling fast

我的应用程序中有一个回收站视图。 每个回收器视图项都有一个 imageView。 我使用 asyncTask 加载位图并将它们添加到磁盘缓存中,然后再将它们设置到 onPostExecute 中的图像视图中。

问题是,如果我快速滚动列表,在为该项目设置正确的图像之前,我可以看到图像混杂了很多。 我对这种行为的理解是,当我滚动列表时,回收者视图项目内容将替换为新项目的内容。 但是由于图像需要一些时间来加载这会导致混洗效果。

我的问题是有什么方法可以防止这种影响或至少将其最小化,以便很少发生改组?

编辑:我尝试将图像位图设置为 null,但似乎没有任何区别。

 @Override
    public void onBindViewHolder(DataObjectHolder holder, int position) {
        holder.title.setText(list.get(position).getTitle());
        holder.subTitle.setText(list.get(position).getSub());
        holder.image.setImageBitmap(null);
        loadBitmap(position, holder.image);
    }

在 onBindViewHolder() 中添加以下行;

holder.setIsRecyclable(false);

您不应该使用 asyncTask 在回收站视图中加载多个位图。 您可以选择创建自己的 ThreadPool 或使用像 Picasso 或 Glide 这样的 3rd 方库。 AsyncTask 会尝试将位图加载到您引用的列表项中,但是因为您滚动得太快,所以一切都搞砸了。

使用 3rd 方库,如 Universal Image Loader(UIL) 或 Picasso 或 Glide。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM