【发布时间】:2018-02-06 13:52:41
【问题描述】:
在 Glide 成功渲染图像后,我在更新文本视图时看到此错误。
致命异常:java.lang.IllegalStateException:必需 类 CustomBinding 中的 DataBindingComponent 为空。一个绑定适配器 在 CustomViewModel 中不是静态的,需要一个对象才能使用, 从 DataBindingComponent 中检索。如果你不使用通货膨胀 采用 DataBindingComponent 的方法,使用 DataBindingUtil.setDefaultComponent 或制作所有 BindingAdapter 方法 静态的。
@BindingAdapter(value = { "android:src", "placeHolder" }, requireAll = false)
public void setUrl(ImageView imageView, String url, Drawable placeHolder) {
Glide.with(imageView.getContext())
.load(url)
.placeholder(placeHolder)
.centerCrop()
.listener(new Listener<String, Drawable>() {
@Override
public boolean onException() {
viewmodel.setTextVisible(true);// ERROR!
return false;
}
@Override public boolean onResourceReady() {
viewmodel.setTextVisible(false); // ERROR!
return false;
}
})
.into(imageView);
}
public void setTextVisible(boolean visibility) {
textVisibility = visibility;
notifyPropertyChanged(BR.textVisibility);
}
@Bindable
public boolean getTextVisible() {
return textVisibility;
}
这就是我初始化视图模型并将数据绑定到片段内的方式:
CustomBinding binding =
DataBindingUtil.inflate(inflater, R.layout.custom, container,
false);
CustomViewModel viewModel = new CustomViewModel(data, context);
binding.setHandlers(new CustomHandlers(context));
binding.setData(viewModel);
我找不到在视图模型中实际实现此功能的方法。提前感谢您的帮助。
【问题讨论】:
-
您到底想实现什么?滑动加载图片失败时是否要隐藏另一个TextView?
-
是的@LeoDroidcoder
标签: android mvvm data-binding android-databinding