android - 使用 ViewModel 和 Model 进行数据绑定
问题描述
(这里是法语,对可能的误解深表歉意)
我是 Android 数据绑定的新手,我正在努力解决一个相当简单的问题。
假设我有这个 POJO,我们将把它视为我的模型的一部分
public class User
{
public String name;
public User(String name)
{
this.name = name;
}
}
现在我有一个包含用户的 ViewModel
public class MyViewModel extends ViewModel
{
private User user = new User("blue");
public String getName()
{
return user.name;
}
public void setName(String name)
{
user.name = name;
}
}
我希望视图(活动)能够在这个“名称”字段上进行双向数据绑定。我知道如何做 Activity 和 XML 的东西,比如设置 Binding 类等。我不知道的是,如何使 ViewModel 可观察到 User 类的“name”字段的任何更改。请注意,我不想通过执行以下操作使我的 User 类可观察:
public class User
{
public MutableLiveData<String> name;
public User(String name)
{
this.name.setValue(name);
}
}
因为我个人更喜欢让这些 Android 东西远离我的模型。
如何更改我的 ViewModel 以便 View 可以收听“名称”的更改?我已经看到了一些带有 @Bindable 注释的东西,但我不太确定如何使用它。
谢谢你的帮助
解决方案
You can add Bindable like this in your POJO Class
public class User extends BaseObservable
{
public String name;
public User(String name)
{
this.name = name;
}
@Bindable
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
notifyPropertyChanged(BR.name);
}
}
推荐阅读
- c - C 中的 std::array 等效项
- java - 可以转换 ArrayList
到数组列表 ? - c# - 具有 2 种不同类型的 TaskCompleteSource?
- mongodb - 如何在mongodb的所有文档中向子文档数组中添加一个字段?
- c - C:如何从标准输入读取许多字符串
- python - 需要 Python 帮助。将电子表格中的数据收集到可以保存字符串和数字的数组中的最佳方法是什么
- c# - 从数据库中获取后如何在 CSHTML 中编写@html.actionlink
- r - dplyr:使用来自其他指定列的值创建新列
- php - 使用php查看最后上传到数据库的图片
- javascript - 多次对小数组进行排序