数据绑定 - ObservableField<String> 未更新视图

Databinding - ObservableField<String> not updating view

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

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

ViewModel

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()方法,使name成为public。或者,有 getName() return name,而不是 name.get().

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

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

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