關於Android LiveData Transformations - lystyp/MVVMTest GitHub Wiki

這個主要就是用在, 假設我有一個LiveData A的值變了,會用A去get一個LiveData B來更新UI, 做法1: 監聽A,當A變了就get一個新的來取代原本的B,UI重新監聽新的B 這樣每次binding都要重set,影響效能(但是RecycleView的Adapter就是這樣做不是嗎?不得不嗎?非Adapter的地方就可以不要用這個方法)

做法2: 監聽A,當A變了就去get 要給B的值,然後用原本的B set新的Value, 但這樣code很醜吧?

做法3: 用Transformations, 監聽A,先用Transformations定義好A變了的話,get 新的B的方法, 接著定義一個C = Transformations.switchMap(A, getB方法) 這樣A變了的話,會get新的B,接著綁在C下面,UI只要監聽同一個C就好了,不管B是新的舊的怎麼變值,都可以從C聽到