我想通过Java观察@Bindable
,是否可能?
我读到我可以在这个答案上观察一个ObservableField: https://stackoverflow.com/a/31885802/858257
但有时您需要原始字段,最佳方法是使用@Bindable
。
答案 0 :(得分:4)
当然可以。如果您有一个标有@Bindable
的字段并实施Observable
,则可以监听该字段的更改。任何可绑定字段必须在更改时通知。例如:
public class Item extends BaseObservable {
private String name;
private int stockCount;
@Bindable
public String getName() { return name; }
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);
}
@Bindable
public int getStockCount() { return stockCount; }
public void setStockCount(int stockCount) {
this.stockCount = stockCount;
notifyPropertyChanged(BR.stockCount);
}
}
然后,您可以侦听此对象的更改。我使用BaseObservable
作为此数据类的基类,因为它实现了对我的可观察性。
public void listenForStockChange(Item item) {
item.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if (propertyId == BR.stockCount) {
Item item = (Item) sender;
// Do whatever you want when the stock changes
}
}
});
}