将当前片段中的recyclerview的UI和数据与相邻片段中的recyclerview的UI和数据同步

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

这是Facebook上的“喜欢”功能。我想将这些Recyclerviews与这两个部分同步。如果单击Recyclerview上的“赞”按钮,则当您更改为另一件时,Recyclerview上的“赞”按钮应该会更改。

我应该使用哪种方法?接口?服务?地图我应该用这个吗?

您使用什么方法来同步两个片段的数据?

android android-fragments android-recyclerview synchronized synchronize
1个回答
1
投票

您应该使用架构组件中的ViewModel。 https://developer.android.com/topic/libraries/architecture/

基本上,您在活动中创建视图模型,以便与活动范围一起存储

//this is the instance of the activity
ViewModelProviders.of(this)

然后,您可以使用在每个片段中获取此视图模型的实例

ViewModelProviders.of(getActivity())

然后可以像在标准MVVM架构中一样使用视图模型。

每个片段都应注册到ViewModel将提供的生命周期感知组件。 MutableLiveData就是这样一个组件,您可以使用它将数据提供给对数据感兴趣的人(在本例中为每个片段)

请注意,LiveData虽然做得非常好,但可以限制,因为它将数据存储为及时状态。这很棒,但是应该在事件驱动的情况下开发android)作为示例如果你有一个viewmodel通过livedata将数据发送到视图,它可以触发一个对话框。当用户关闭该对话框并导致配置更改(销毁并重新创建活动)时,视图将在设置的时间点接收实时数据的状态,这将再次显示该对话框。基本上每次旋转设备时它都可以显示对话框,即使你已经解除了它。一个hacky修复此问题是通知viewmodel在对话框被解除后删除livedata中的状态。但这会产生许多其他问题,包括使用viewmodel绑定视图状态

如果生命周期感知组件发送数据更改时的事件,则会更加灵活。想一想生命周期意识的Rxjava。您将数据添加到RXJava组件,并且当视图处于使用它的状态时,observable将向观察者提供数据(> onresume和<ondestory)。

希望这能为您提供一个起点。如果您需要更多详细信息,请告诉我们

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