[英]Android Data Binding Binding Adapter with class reference
我创建了这个绑定适配器
@BindingAdapter("adapter")
public static void setAdapter(RecyclerView view, RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) {
view.setAdapter(adapter);
}
并以XML格式设置
app:adapter="@{com.package.Adapter}"
它会带来各种错误。 我想要的是做与使用XML中的LayoutManager相同的事情
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
你知道如何通过课程来解决这个问题吗?
PS我不想在XML中传递变量引用,因为假设我只想使用XML。
您似乎正在尝试在XML中设置类,但是正在接受BindingAdapter中的实例。 如果你想接受一个类并在你的BindingAdapter中实例化它,它将使用反射,如下所示:
@BindingAdapter("adapter")
public static void setAdapter(RecyclerView view, Class adapter) {
try {
Object instance = adapter.newInstance();
view.setAdapter((RecyclerView.Adapter)instance);
} catch (Exception e) {
Log.e(....);
}
}
如果要将实例传递给绑定(更好的方法,IMO),则不需要BindingAdapter。 您可以依赖现有的setAdapter
调用:
<layout>
<data>
<variable name="adapter" type="android.support.v7.widget.RecyclerView.Adapter"/>
</data>
<android.support.v7.widget.RecyclerView
app:adapter="@{adapter}" .../>
</layout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.