繁体   English   中英

带有类引用的Android数据绑定绑定适配器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM