RecyclerView 图片错位空白的问题

2018-08-26 00:18:04

这几天一直在研究我做的一个功能,牵扯到了recycleview,图片显示错位,空白的问题。


关于RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题)

我参考了下面这个文章,写的真是好啊。


RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题)


Android学习之-RecyclerView带刺的玫瑰


下面说一下我的实际理解与操作。


1.图片错位的原因是因为图片异步记载返回去展示出的问题。图片空白,是item刷新,请求图片时间上的问题。

2。viewHolder.setIsRecyclable(false); 就没有tag,不设置 就有tag,但是有没有没啥区别

设置tag,

tag只能设置只能限制并准确的实现图片展示在哪个元素上,这个类似于js的异步操作,能确定这个元素对不对。

但是并不能根据tag来判断我当前的holder以及holder下面的子元素是否已经加载了图片,因为holder等都是服用过来的,tag也复用过来了。所以这个只能确保图片不错位,但是不能保证图片快速加载图片空白的问题。

然后我又尝试用map来保存图片加载过的状态,然后加载并正确的图片item不再去刷新他,不知道为什么这样更错位了。我又用map保留了图片的宽度,不再去根据图片获得宽高,结果还是有空白时间,这个真是没办法。


homeAdapter.setHasStableIds(true);


     @Override

        public long getItemId(int position) {

            return position;

        }


我也尝试了给adapter设置这个,依然还需要重新刷新item,真不知道为啥。

return 1。 或者设置,这样倒是不刷新了,但是图片都成了一个图片。



2、tips1:如果你调用了:viewHolder.setIsRecyclable(false);那么这个Item的onViewRecycled将永远不会调用。


虽然每个holder不复用了,但是每次holder都是新的 ,所以也不会有tag。无语



总之错位能解决,空白我是没解决,就先这样吧,等看到开源的解决掉的开源工程的时候在说吧,研究了一天。

  • 2020-03-09 21:34:48

    Android TV 包安装成功后找不到启动图标

    生成APK文件,用U盘插入到小米盒子上,然后点击安装,提示安装成功。 可是找不到启动图标,安装成功的弹窗也没有打开的选项。 而我之前测试装的一款手机应用是可以找到启动图标的。

  • 2020-03-09 21:37:10

    安卓Tv端App开发与手机端的开发的区别

    因为大部分电视机的配置一般都比手机低,但是电视机一般都是用来看视频的,所以在做视频解码的时候,因为电视机配置比较低,所以大多数手机运行流畅的播放器在电视机上面都会卡顿,或者出现一些其他的问题,经过我同事长时间的测试,认为百度播放器跟小米播放器比较适合电视机作为播放器开发使用。如果你们要选择一个播放器,要先拿一个demo去很多台不同类型的电视机去测试,因为网络上面的播放器在电视机卡的真的很多,先测试好了再使用可以节约大家的时间。

  • 2020-03-09 22:11:39

    聊聊真实的 Android TV 开发技术栈

    智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了。但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样。

  • 2020-03-11 09:43:20

    JavaScript shift() 方法

    shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

  • 2020-03-11 09:45:19

    45个优秀的vue开源项目

    在过去一年里,前端开发发展迅速,前端工程师的薪资亦是水涨船高。2019 更是热度不减,而作为近年来尤为热门的前端框架,Vue.js 自是积累了大量关注。本文将为你介绍 2019 年最值得关注的 45 个 Vue.js 开源项目——Let's go!

  • 2020-03-11 18:26:52

    Mac设置ADB

    adb在 ~/Library/Android/sdk/platform-tools文件夹内