もちろん可能です。 @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
}
}
});
}
チャームのように働いた!どうもありがとうございました :) – melanke