我在使用数据绑定更新drawableLeft
的{{1}}时遇到问题。
我的实时数据:
TextView
我的绑定适配器:
val iconLiveData = MutableLiveData<Drawable>()
布局中的TextView:
@BindingAdapter("drawableLeft")
fun TextView.setDrawableLeft(drawable: Drawable?) {
Timber.d("Setting drawable from adapter: $drawable")
setCompoundDrawablesWithIntrinsicBounds(drawable,null,null)
}
更改可绘制图形的代码:
<TextView
...removed all other params for simplicity
drawableLeft="@{viewModel.iconLiveData}"/>
这是我执行值更改时发生的事情:
val drawable = repository.getDrawable(R.drawable.ic_google_fit)
Timber.d("Setting drawable: $drawable")
iconLiveData.value = drawable
2019-11-04 14:49:51.296 23568-23568 D/LOG: Setting drawable: android.graphics.drawable.VectorDrawable@347943e
2019-11-04 14:49:51.298 23568-23568 D/LOG: Setting drawable from adapter: null
进入Drawable
,但是当它进入LiveData
时,它为空。看来BindingAdapter
无法通过Drawable
传递,但我对此没有任何确认。
对于原因,我不能使用资源而不是可绘制对象。