已經(jīng)夜里一點多了,還是想分享下。
class WalletViewModel : ViewModel() {
var balance: MutableLiveData<String> = MutableLiveData()
lateinit var disposable: Disposable
init {
balance.value = "未知"
}
fun getBalance() {
disposable = RetrofitFactory.retrofitApi.getRestMoney(OTL.getToken().bearerAccessToken)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe({
balance.value = it.balance
}, {
showToast("獲取余額失敗")
balance.value = "未知"
})
}
override fun onCleared() {
disposable.dispose()
}
}
這樣一段代碼死活綁定報錯,java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor .....
搜了下stackoverflow,說是綁定的對象一定要有g(shù)et方法,可是我用的kotlin,非private變量默認就有g(shù)et、set方法。這下一下子失了智,先是懷疑LiveData的問題,可是Google明確說了現(xiàn)在AS3.1以后可以用LiveData替代ObserveFiled。
完了,繼續(xù)死磕,但是毫無頭緒。
試著強行加get方法,當然還是報錯,但是突然發(fā)現(xiàn)我加的get方法和我下面獲取數(shù)據(jù)的getBalance()方法重名!一下子茅塞頓開,DataBinding默認去拿這個方法來獲取我的liveData當然獲取不到了。
最近寫Kotlin+DataBinding+LiveData+MVVM有點上頭,熬了幾天終于有了點漸入佳境的趕腳。不說了,快兩點了還沒洗澡