首页 > 解决方案 > 使用 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 注释的东西,但我不太确定如何使用它。

谢谢你的帮助

标签: androiddata-bindingandroidxandroid-jetpacktwo-way

解决方案


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);
}
}

推荐阅读