我在recyclerview的行中有多个元素 - >多个我的意思是数量上的多个以及多个类型,即多个图像视图,文本视图等。以下是要点,以便您可以看到所有元素:https://gist.github.com/Harshhb101/55e25da72e3a474aeeb422d5e231d3e3
问题是我需要根据一个最多可能有10个值的参数隐藏/显示这些元素。因此我将有10种类型的行。目前我只为行创建了一个布局,包含所有类型行的元素,在某些移动设备中,滚动有滞后。主要是我得到行有图像的滞后。我正在使用Glide加载图像。以下是onBindView:https://gist.github.com/Harshhb101/e10feb2cccda9d698ff06487bbb879ef的要点
我确实查看了stackoverflow,但找不到任何可靠的东西但是使用了多个视图。我的问题是,如果我重构我的代码,它会通过使用多个视图来产生重大影响吗?或者我的方法中有什么问题可以修复以获得良好的收益。
您需要缩小RecyclerView图像以节省内存并缓存它们。阅读this。
此外,如果您的ViewHolder包含大小为wrap_content的图像,那么图像将被加载为完整大小,这对于性能非常不利,例如,如果屏幕上的视图大小为48dp x 48dp且图片为全高清,那么全高清可绘制将被加载到内存中是什么让你的滚动缓慢而不顺畅。
我建议在ViewHolder中使用固定大小或在Glide中加载时覆盖图像大小
在查看代码后,我发现了几项改进。
onbind()
中执行繁重的任务,而是在设置recyclerview适配器之前专门为recyclerview准备数据类(如果需要大量的计算,如重字符串操作等)。