何时使用Android LiveData

时间:2019-11-16 20:27:57

标签: android android-livedata

我的android应用有一个购物车活动,在该活动中,我将LiveData与CartRepository和Room数据库一起使用以显示购物车中的项目。效果很好。在工具栏中,我有一个actionLayout(下图),带有一个带有图标的购物车图标,该视图显示了购物车中的物品数量。我很好奇,如果这是我也应该使用LiveData的地方?有没有一种方法可以将其转变为某种组件,该组件可以在购物车中的物品发生更改时利用LiveData进行更新?如果是这样,我该怎么做? 谢谢!

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="60dp"
    android:layout_height="36dp">

    <ImageView
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:clickable="false"
        android:src="@drawable/icon_cart" />

    <TextView
        android:id="@+id/cart_badge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:background="@drawable/rounded_corner"
        android:layout_alignParentRight="true"
        android:layout_marginRight="5dp"
        android:paddingTop="2dp"
        android:paddingBottom="2dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:textSize="14dp"
        android:textColor="@android:color/white" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

您将需要在活动中观察购物车存储库中的更改。为此,您可以在存储库和活动之间使用视图模型。因此,与其直接从您的存储库中使用LiveData,不如让它通过视图模型。完成此操作后,观察活动中的数据更改(在您的情况下为购物车中的物品数量),并在获得新的编号(或任何数据)后更新textview。

使用视图模型的一个优点是-即使您的生命周期所有者(活动或片段)被破坏并重新创建,相同的视图模型实例也可以连接到新的生命周期所有者。这样,您就永远不会丢失应用程序中的当前状态。