属性 数据绑定中的 属性 发生变化时如何得到通知?
How to get notified when property changes in Android databinding?
我希望在我的变量 属性 发生变化时收到通知。
在我的 Activity:
viewDataBinding = DataBindingUtil.setContentView(this, R.layout.list);
viewDataBinding.setViewFilter(viewFilter);
我的模特:
public class ViewFilter extends BaseObservable {
private String priceFrom;
public ViewFilter() {
}
@Bindable
public String getPriceFrom() {
return priceFrom;
}
public void setPriceFrom(String priceFrom) {
this.priceFrom = priceFrom;
notifyPropertyChanged(BR.priceFrom);
}
}
我的布局:
<data>
<variable
name="viewFilter"
type="com.example.ViewFilter" />
</data>
<EditText
android:id="@+id/edtListPriceFrom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="numberDecimal|numberSigned"
android:text="@={viewFilter.priceFrom}" />
当我要添加监听器时:
viewFilter.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
它没有被调用。
我应该怎么做才能收到有效的 属性 更改通知?
正如评论中所建议的那样 - 我正在其他对象实例上注册回调,这就是我没有收到任何回调的原因。
我希望在我的变量 属性 发生变化时收到通知。
在我的 Activity:
viewDataBinding = DataBindingUtil.setContentView(this, R.layout.list);
viewDataBinding.setViewFilter(viewFilter);
我的模特:
public class ViewFilter extends BaseObservable {
private String priceFrom;
public ViewFilter() {
}
@Bindable
public String getPriceFrom() {
return priceFrom;
}
public void setPriceFrom(String priceFrom) {
this.priceFrom = priceFrom;
notifyPropertyChanged(BR.priceFrom);
}
}
我的布局:
<data>
<variable
name="viewFilter"
type="com.example.ViewFilter" />
</data>
<EditText
android:id="@+id/edtListPriceFrom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="numberDecimal|numberSigned"
android:text="@={viewFilter.priceFrom}" />
当我要添加监听器时:
viewFilter.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
它没有被调用。
我应该怎么做才能收到有效的 属性 更改通知?
正如评论中所建议的那样 - 我正在其他对象实例上注册回调,这就是我没有收到任何回调的原因。