Dom*_*min 4 android android-databinding
我有一个简单的应用程序——Button它从 rest api 中获取数据以及TextView显示此数据的位置。我正在使用MVVM架构模式。当ViewModel收到带有获取数据的回调时,我将其设置为 ObservableField。不幸的是它不会更新屏幕上的文本,但是每当我旋转设备数据时都会在屏幕上更新。
好了,废话不多说,我给你看代码:
视图模型
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();
}}
Run Code Online (Sandbox Code Playgroud)
并在 XML 中:
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.name}"
tools:text="some text"/>
Run Code Online (Sandbox Code Playgroud)
据我所知,我认为android:text="@{viewModel.name}"在 ' @' 和 ' {'之间的这一行中它应该是 '=' ,但是当我添加它时,清理项目并重建它,我得到了一个无法解决的错误DataBindingComponent。
有任何想法吗?
提前致谢!
删除该getName()方法,并将name其设为public。或者,有getName()return name,没有name.get()。
数据绑定系统需要直接使用Observable. 现在,您Observable对数据绑定是隐藏的,因此数据绑定无法注册观察者并知道数据何时发生变化。
据我所知,我认为它应该是 '=' 在这一行 android:text="@{viewModel.name}" 之间 '@' 和 '{',
该语法 ( @={viewModel.name}) 用于双向数据绑定。由于用户无法将数据输入到 a 中TextView,因此这里不需要。
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |