onPropertyChanged - 如何从外部类切换propertyId

时间:2016-03-04 03:59:17

标签: android-databinding

我有一个扩展BaseObservable的模型。我有一个视图模型,其中包含对模型的引用并订阅模型中的属性更改。如何从视图模型中的回调中打开Model.propertyId?在下面的示例中,BR.assignedId是模型中的属性。例如:

查看模型

public void onPropertyChanged(Observable sender, int propertyId)
{

    switch (propertyId)
    {
        case MyModel.BR.assignedId://compile error
            notifyPropertyChanged(BR.assignedImage);
            break;
    }
}

1 个答案:

答案 0 :(得分:0)

我建议你阅读观察者模式。上面的代码有Entities:Observer和Observable。观察者有一个观察方法。任何想要观察'Observable'的类都需要将自己注册为'Observer'。 Observable在Observer上调用观察方法,这就是通常的回调工作方式。 (类和方法的名称可能不同,我根据意图和背景使用)

检查'ViewModel.java'类将实现一些'observer'接口,该接口将具有'onPropertyChanged()'方法。您必须在Model.java中设置ViewModel.java的对象。 (检查你应该有一个名为addPropertyChangeObserver()的方法,虽然它可能不同但类似的方法。使用此方法在Model.java中设置ViewModel.java的对象。现在Model.java将调用方法' ViewModel.java上的onPropertyChanged。

如果您想修改模型上的内容,请检查sender参数。您可以在Model实现的接口中添加另一个方法,并且可以使用它对Model进行修改,或者可以在使用instanceof检查其类型后简单地对发送方进行类型转换,并且可以从回调方法对Model.java执行该过程。