2019年1月9日 星期三

Android Databinding 二三事

公司的專案是用 MVVM 架構,一開始看覺得懂了,看久了又有點疑惑,最近再看又覺得哪裡怪怪的。

原來是不僅用了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 ,簡單使用就不多說了。

沒有留言:

張貼留言