极度滞后的RecyclerView性能

时间:2015-10-26 20:26:02

标签: android adapter android-recyclerview lag

我在my_date= request.POST.get('my_date','') # for eg. 2015-10-26 events = FacebookEvent.objects.all().filter(start_time__range= (datetime.combine(my_date,(datetime.min).time()), datetime.combine(my_date,(datetime.max).time()))).order_by('start_time') 内部有一个RecyclerView实现,其性能非常糟糕。 Here's a video of the performance in question.我有两种视图类型,并且正在使用ViewHolder模式(因此它不是通货膨胀或查找导致问题的视图)。

Here's the adapter.

这里是cardview.xml文件

ViewPager

除了通货膨胀之外,删除所有适配器代码仍会导致明显滞后。 我真的无法找到这个的底部,非常感谢任何帮助/提示。

编辑:更多信息:删除数据集"隐藏"代码(getRealPosition,hideAll,unhideAll)对RecyclerView的速度没有影响。此外,删除FlowLayout并不会使它更快。

2 个答案:

答案 0 :(得分:9)

我在使用RecyclerView时遇到了同样的问题。这是滞后的。就我而言,RecyclerView中有一个水平的图像按钮列表。

我通过从scaleTypeImageButtons移除ImageViews并使用resizing加载Picasso图像来解决此问题,如:

 Picasso.with(context).load(icon.get(position)).resize(270,270).centerCrop().into(holder.iconView);

由于大尺寸图像的运行时缩放或否,可能会出现滞后问题。的图像。这是不可取的。毕加索负责调整大小,并有效地加载。它还为你处理缓存。

答案 1 :(得分:0)

我用的是TheOddAbhi写的同一行代码,

Picasso.with(context).load(icon.get(position)).resize(270,270).centerCrop().into(holder.iconView);

但是在我的布局文件中,从scaleType中删除ImageView无效,因此我删除了android:adjustViewBounds="true",这是导致滞后的问题。