gpt4 book ai didi

android - 哪个是有效的数据绑定(bind)符号 "android:text="@={prop }""或 "android:text="@{prop }""

转载 作者:行者123 更新时间:2023-11-29 19:10:30 25 4
gpt4 key购买 nike

我阅读了有关数据绑定(bind)的教程,就像下面来自 android 开发人员的示例

   <TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"
android:onClick="@{handlers::onClickFriend}"/>

但是当我在TextInputLayout xml上实现数据绑定(bind)功能时

<android.support.design.widget.TextInputLayout
android:id="@+id/user_id_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:layout_marginBottom="@dimen/spacing_normal">
<android.support.design.widget.TextInputEditText
android:id="@+id/input_user_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:lines="1"
android:text="@={viewmodel.userName}"
android:hint="@string/prompt_username" />
</android.support.design.widget.TextInputLayout>

并在viewmodel中声明变量

public final ObservableField<String> userName = new ObservableField<>();

当我调用 userName.get() 时,它总是给我 null


但是,我只更改了数据绑定(bind)语法

android:text="@{viewmodel.password}"

android:text="@={viewmodel.password}"

我的userName.get()终于返回了用户输入的值。

为什么会这样?

最佳答案

据我了解,android:text="@={viewmodel.userName}" 用于双向数据绑定(bind)(数据可以来自程序或布局) ,以及您可以使用 Observable 实时更新数据的地方。

另一方面,android:text="@{viewmodel.userName}" 用于简单值,您可以使用简单数据类型(如字符串等)手动设置值.

因此,因为您正在使用 Observable,所以您必须使用 @=

关于android - 哪个是有效的数据绑定(bind)符号 "android:text="@={prop }""或 "android:text="@{prop }"",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com