深夜爬坑——Kotlin+DataBinding方法命名引起綁定問題

已經(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有點上頭,熬了幾天終于有了點漸入佳境的趕腳。不說了,快兩點了還沒洗澡

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容