我想将视图引用指定为ImageView
的属性
@BindingAdapter(value = {"imageUrl", "progressView"}, requireAll = false)
public static void setImageUrl(ImageView imageView, String url, @IdRes int progressBar) {
Context context = imageView.getContext();
View progressView = imageView.getRootView().findViewById(progressBar);
progressView.setVisibility(View.VISIBLE);
Glide.with(context).load(url).listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
if (progressView!= null) {
progressView.setVisibility.setVisibility(View.GONE);
}
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
if (progressView!= null) {
progressView.setVisibility(View.GONE);
}
return false;
}
}).crossFade().into(imageView);
}
但是我进度视图为空。我试着将上下文转换为活动,findViewById
也为空另一种解决方案是在图像下面添加进度视图,当它成功加载时,它应该被覆盖在图像上
3条答案
按热度按时间7vux5j2d1#
奇怪的是,你看到一个空的progressView。你可能没有在你的布局,也许?
在任何情况下,您都可以这样做:
在BindingAdapter中:
hl0ma9xz2#
@BindingAdapter“value”是一个字符串数组,所以试试这个:
gzszwxb43#
在我的示例中,我传递了一个ScrollView id作为BindingAdapter的参数。
这是布局代码:
这是用Kotlin编写的Bindig Adapters代码: