带有列表适配器移动动画滞后的 Android 回收器

问题描述 投票:0回答:1

View gif of the problem here

如果项目的视图同时更新,则移动动画会滞后。为什么会出现这种情况?

fileViewModel.getAllfiles().observe(this, new Observer<List<File>>() {
   @Override
   public void onChanged(List<File> files) {
      adapter.submitList(files);
   }
});

进度像这样更新,更新数据库并触发观察者

fileViewModel.setDownloadProgress(file.getFileId(), percentage);

下载的下只有一两项也不卡

java android android-recyclerview android-livedata listadapter
1个回答
0
投票

每当发生更改时,您似乎都会替换整个文件列表。 不推荐这种做法,因为它会增加时间复杂度。

您应该只通知 RecyclerView 适配器发生的实际更改。在您的情况下,您只更改一项。

参考官方文档和最佳实践:https://developer.android.com/topic/performance/vitals/render#recyclerview_notifydatasetchanged

© www.soinside.com 2019 - 2024. All rights reserved.