gpt4 book ai didi

android - 数据绑定(bind) - ObservableField 不更新 View

转载 作者:搜寻专家 更新时间:2023-11-01 09:20:49 49 4
gpt4 key购买 nike

我有一个简单的应用程序 - Button - 它从 rest api 和显示此数据的 TextView 获取数据。我正在使用 MVVM 架构模式。当 ViewModel 收到带有获取数据的回调时,我将其设置为一个 ObservableField。不幸的是,它不会更新屏幕上的文本,但每当我旋转设备时,屏幕上的数据都会更新。

好了,不多说了,我给你看代码:

View 模型

public class MyViewModel extends ViewModel{

private ObservableField<String> name = new ObservableField<>();

@Override
public void onListReceived(String username) {
super.onListReceived(list);
name.set(username);
}

public String getName() {
return name.get();
}}

在 XML 中:

<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.name}"
tools:text="some text"/>

据我所知,我认为在 android:text="@{viewModel.name}" 这行中应该是 '@' 之间的 '='和“{”,但是当我添加它、清理项目并重建它时,我收到无法解析 DataBindingComponent 的错误。

有什么想法吗?
提前致谢!

最佳答案

删除getName() 方法,并使namepublic。或者,让 getName() 返回 name,而不是 name.get()

数据绑定(bind)系统需要直接与Observable 一起工作。现在,您的 Observable 对数据绑定(bind)是隐藏的,因此数据绑定(bind)无法注册观察者并知道数据何时更改。

As far as I read, I think it should be '=' in this line android:text="@{viewModel.name}" between '@' and '{',

该语法 (@={viewModel.name}) 用于双向数据绑定(bind)。由于用户无法将数据输入到 TextView 中,因此此处不需要。

关于android - 数据绑定(bind) - ObservableField<String> 不更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55775729/

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