首页 > 解决方案 > 如何使用 MVVM 正确处理 RecyclerView 中的恒定数据流?

问题描述

我的项目是用 MVP 模式编写的。RecyclerView 的每个元素都是一个自定义视图。每个自定义视图都有一个演示者,它负责监听来自流的数据并在自定义视图中设置接收到的值。Stream 每 4 秒发送一次新数据。流发送的模型是对象列表

FancyStreamValue(val id: Int, val value: String)

RecyclerView 中的每个图块都有固定的 id,它与 FancyStreamValue 中的 id 相同,因此每个演示者都从他的 id 下的流中获取值。

图片描述了回收站视图的外观

我想用 LiveData 重构 MVVM 模式。据我所知,自定义视图不应该有 ViewModel 里面。实施这项权利的最佳方式是什么?到目前为止,我已经尝试使用一个 ViewModel,它从流中获取整个值列表并通过设置回收器视图适配器

fancyStreamAdapter.submitList(streamValuesList)

我注意到 recyclerview 列表没有 100% 平滑滚动,只是在新数据从流中以新值到达时不时卡住

RecyclerView 也在闪烁,我不确定每 4 秒刷新一次整个列表是否有效?请提供建议:) 提前谢谢!!:)

标签: androidkotlinandroid-recyclerviewandroid-mvvm

解决方案


推荐阅读