gpt4 book ai didi

android - 使用 DataBindingComponent 膨胀方法

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:15 25 4
gpt4 key购买 nike

我在 Glide 成功渲染图像后更新 TextView 时看到此错误。

Fatal Exception: java.lang.IllegalStateException: Required DataBindingComponent is null in class CustomBinding. A BindingAdapter in CustomViewModel is not static and requires an object to use, retrieved from the DataBindingComponent. If you don't use an inflation method taking a DataBindingComponent, use DataBindingUtil.setDefaultComponent or make all BindingAdapter methods static.

@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;
}

这就是我如何初始化 View 模型并将数据绑定(bind)到 fragment 中:

CustomBinding binding =
DataBindingUtil.inflate(inflater, R.layout.custom, container,
false);

CustomViewModel viewModel = new CustomViewModel(data, context);
binding.setHandlers(new CustomHandlers(context));
binding.setData(viewModel);

我找不到在 View 模型中实际实现它的方法。预先感谢您的帮助。

最佳答案

遇到了同样的问题,通过向方法添加 @JvmStatic 注释得到解决,并且它有效。

应该是这样的

@BindingAdapter("app:someAttribute")

@JvmStatic

示例

class TestBindingHelper {

companion object{

@BindingAdapter("app:serviceOptions")
@JvmStatic
fun setServiceOptions(recyclerView: RecyclerView, listOfData: List<String>?) {
//do something funny
}

}
}

关于android - 使用 DataBindingComponent 膨胀方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45933481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com