繁体   English   中英

如何更新 ViewPager2 片段中的新数据?

[英]How do I update new data in ViewPager2 fragments?

我有一个片段,其中包含:

  • 一个 ViewPager2,它包含几个用于左右滑动的 Fragment
  • 这些 Fragments 仅包含一个 RecyclerView ,它显示其中的项目列表
  • 自定义视图 (LinearLayout)

我想要实现的是当用户单击自定义视图时,它将更新 RecyclerView 中的数据。

在我的例子中,当用户取消选择自定义视图中的项目时,它也会取消选择 RecyclerView 项目中的内容。

我不确定如何使用返回到 RecyclerView 的适配器级别的侦听器来执行此操作。 有人对如何实现这一目标有任何想法吗?

您可以为此使用 BroadcastReceiver。 如果您想触发,当您广播时,相关代码将在您要捕获广播的Fragment上触发。

您还可以使用 EventBus 库。 这两种方法都可以,但 EventBus 制造商声称它们比 BroadcastReceiver 性能更高。

您可以使用以下方式进行通信:

  1. SharedViewModels:两个 Fragment 使用相同的 SharedViewModel,1 将更新 viewModel 中的 Observable(LiveData/Flow),另一个 Fragment 将观察该 Observable(LiveData/Flow) 的变化

  2. Flows/LiveData:从任何 Repository 或 UseCase 层公开,类似于 SharedViewModels,但您的 Observable(LiveData/Flow) 将位于 Repository 或 UseCase 中,并且两个片段的两个 viewModel 都将注入相同的 Repository/UseCase。

  3. RoomDB:将该数据存储在 RoomDB 中并从 Room DAO 返回 Flow/LiveData。 并在您的片段中观察此流程。 每当数据库更改时,您的片段将收到更新数据的通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM