原來是不僅用了Databinding 提供的 BaseObservable 還用了 Java 原生的 Observable,到底為什麼要這樣騙我!
因為 Databinding 也有 Observable 類,一開始沒注意,以為都是Databinding 的,都有這麼好用的東西了還用 Java 的幹嘛(崩潰!),功能有有點像,卻不能拿來 bind UI ,真是雞肋!
以下為兩種實作通知方式
Java 內建的觀察者模式
A 是報紙 exend Observable (可被訂閱)B 是看報紙的人 implements observer (訂閱者)
一般的說法是去訂閱報紙,但實際上程式的寫法是
在報紙發布商C裡
A.addObserver(B)
看起來像是報紙去加入想看報紙的人;
A.notifyObserver >> B 的 update
有新的報紙,報紙去通知想看報紙的人,想看報紙的收到新的報紙
A.deleteObserver(B)
報紙去刪除想看報紙的人
總覺得有點轉不過來。
Databinding 提供的方式
繼承 BaseObservable ,使用 getter + @Bindable 搭配 setter + notifyPropertyChanged(BR.xxx); 通知個別參數或者 notifyChange() aka notifyPropertyChanged(BR._all) 全部參數都通知
第二種使用 ObservableField ,簡單使用就不多說了。
沒有留言:
張貼留言