Android 更新两个活动之间的同一变量以及两个活动中的UI';回收视图

Android 更新两个活动之间的同一变量以及两个活动中的UI';回收视图,android,android-intent,android-activity,android-recyclerview,Android,Android Intent,Android Activity,Android Recyclerview,我有两个活动共享一个完全相同的列表,ListA,它有一个名为amount的属性 在我的第一个活动中,我有: 带有ViewHolders的RecyclerView。在每个ViewHolder中,我都有一个按钮来操作ListA中某个项目的金额(每个ViewHolder中都有一个与之关联的项目)。此RecyclerView有两种类型的ViewHolder:标题和项。项目视图持有人显示与之关联的列表A中项目的金额 一个按钮转到第二个活动 在我的第二项活动中,我有: 第一个活动的列表(ListA)副

我有两个活动共享一个完全相同的列表,
ListA
,它有一个名为
amount
的属性

在我的第一个活动中,我有:

  • 带有
    ViewHolder
    s的
    RecyclerView
    。在每个
    ViewHolder
    中,我都有一个按钮来操作
    ListA
    中某个项目的
    金额(每个
    ViewHolder
    中都有一个与之关联的项目)。此
    RecyclerView
    有两种类型的
    ViewHolder
    标题
    项目
    视图持有人
    显示与之关联的
    列表A中项目的
    金额
  • 一个
    按钮
    转到第二个活动
在我的第二项活动中,我有:

  • 第一个活动的列表(
    ListA
    )副本(使用
    Intent
    Parcelable
    传递)
  • A
    RecyclerView
    ,基本上与第一个活动中的相同(信息方面),具有附加功能。其中一项功能包括操纵
    列表A
    中项目的
    金额。但是,此
    RecyclerView
    只有一个
    ViewHolder
    类型(没有
    标题
    )。此外,
    ViewHolder
    中还存在一些额外的布局(因为添加了一些功能)
  • 返回到第一个活动的
    按钮
我想:

  • 将列表A从第一个活动传递到第二个活动,反之亦然
  • 当第二个活动操纵
    ListA
    并返回到第一个活动时,更新第一个活动的
    RecyclerView
    ViewHolders
    中的UI;反之亦然

最好的方法是什么?目前,我正在将
ListA
作为
Parcelable Intent
传递给第二个活动。然而,我发现在我的第一个活动的
RecyclerView
s
Item ViewHolder
上很难相应地更新UI。这是因为为更新其
项目视图持有者的UI而传递的回调需要表示
数量的布局的指定id(在
onBindViewHolder
中)是由按下按钮触发的,当我返回到第一个活动时,我没有按下该按钮。

具有实时数据的房间解决了您的问题。如果您不想使用内部数据库,您可以尝试在一个活动中使用2个片段,而不是2个活动,并管理活动中的数据(或其演示者、viewmodel等)

我的第一个相关想法是在片段中包含第二个列表(在活动中使用公共方法,将更新的数据传递给第一个
RecyclerView
并通知它)第二个想法是,在第二个活动中处理onBackPressed,存储要更新的数据,并在onResume的第一个活动中更新UI。现在,这两个方法似乎都不够“优雅”
),最后,我可能会使用