有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java自动数据绑定

我在自己制作的一个简单的购物应用程序中实现了数据绑定。每当我向购物车添加一个项目时,购物车中的一个RelativeLayout和两个TextView都会更新它们的值(尤其是颜色和背景)。如果我向你展示以下内容,你可能会更好地了解我在做什么:

<RelativeLayout
        安卓:id="@+id/shopping_cart"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:layout_alignParentBottom="true"
        安卓:background="@{shoppingCart.isActive ? @color/lightBlue : @color/grey }"
        安卓:padding="13dp"
        安卓:onClick="buy">
        <TextView
            安卓:id="@+id/cart_state"
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content"
            安卓:text="@{shoppingCart.state}"
            安卓:textSize="20sp"
            安卓:textStyle="bold"
            安卓:layout_marginStart="40dp"
            安卓:textColor="#fff"
            安卓:layout_centerHorizontal="true"
            />
        <TextView
            安卓:id="@+id/cart_total"
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content"
            安卓:text="@{String.valueOf(shoppingCart.totalPrice)}"
            安卓:textSize="20sp"
            安卓:textColor="#fff"
            安卓:layout_marginStart="30dp"
            安卓:layout_toEndOf="@id/cart_state"
            安卓:gravity="end"
            />
    </RelativeLayout>

这真的很有效

但有一个问题:

如果我想看到更改发生,我必须启动一个新的活动,然后返回到“原始”活动(就像我必须刷新活动才能看到数据绑定发挥其魔力一样)

然而,我真的更希望看到更改立即发生,而不必刷新或重新打开活动

即,如何使数据绑定应用的更改立即反映在UI中


共 (1) 个答案

  1. # 1 楼答案

    更新值时,需要通知视图更新绑定

    您可以使ShoppingCart类扩展BaseObservable以实现通知功能

    看看下面document中的例子

    class User : BaseObservable() {
    
    @get:Bindable
    var firstName: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.firstName)
        }
    
    @get:Bindable
    var lastName: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.lastName)
        }
    }