У меня проблема с обновлением drawableLeft
из TextView
с использованием привязки данных.
Мои живые данные:
val iconLiveData = MutableLiveData<Drawable>()
MyАдаптер переплета:
@BindingAdapter("drawableLeft")
fun TextView.setDrawableLeft(drawable: Drawable?) {
Timber.d("Setting drawable from adapter: $drawable")
setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
}
TextView в макете:
<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
, этозначение NULL. Похоже, Drawable
нельзя передать через LiveData
, но я не могу найти подтверждения этому.
По причинам Я не могу использовать ресурс вместо Drawable.