1

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

查看模型

public void onPropertyChanged(Observable sender, int propertyId)
{

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

1 回答 1

0

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

检查“ViewModel.java”类将实现一些“观察者”接口,该接口将具有方法“onPropertyChanged ()”。您必须在 Model.java 中设置 ViewModel.java 的对象。(检查您应该有一个名称类似于 addPropertyChangeObserver () 的方法,尽管它可能不同但相似。使用此方法在 Model.java 中设置 ViewModel.java 的对象。现在 Model.java 将调用该方法' ViewModel.java 上的 onPropertyChanged'。

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

于 2016-03-04T04:15:53.183 回答