Android。将 RealmObject 与数据绑定一起使用

Android. Using the RealmObject with Databinding

我正在为 databinding 使用 RealmObject 模型。 它运行良好,但现在我希望在数据更改时更新我的​​视图,并且我实现了 Observable.

型号是:

public class RealmArticle extends RealmObject implements Observable {

    public RealmArticle() {
    }

    private PropertyChangeRegistry registry =
            new PropertyChangeRegistry();

    @Bindable
    public String getCountText() {
        return countText;
    }

    public void setCountText(String countText) {
        this.countText = countText;
        registry.notifyChange(this, BR.obj);
    }

    @Override
    public void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
        registry.add(callback);
    }

    @Override
    public void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
        registry.remove(callback);
    }
}

问题是 RealmObject 不支持 PropertyChangeRegistry 类型的字段。

Android 工作室说:Error:(18, 8) error: Field "registry" of type "android.databinding.PropertyChangeRegistry" is not supported.

有没有办法在不违反 RealmObject 功能的情况下实现此接口?

向该字段添加 Ignore 注释就足够了。

喜欢documentation of RealmObject状态

An annotation processor will create a proxy class for your RealmObject subclass. The following field data types are supported:

  • boolean/Boolean
  • short/Short
  • int/Integer
  • long/Long
  • float/Float
  • double/Double
  • byte[]
  • String
  • Date
  • Any RealmObject subclass
  • RealmList

Fields annotated with Ignore don't have these restrictions and don't require either a getter or setter.

像这样,您可以从代理生成中省略该字段。

或者您可以使用 transient Java 关键字来实现同样的效果。