【问题标题】:Android Data Binding Binding Adapter with class reference带有类引用的 Android 数据绑定绑定适配器
【发布时间】:2016-07-10 20:43:44
【问题描述】:

我创建了这个绑定适配器

@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"

你知道如何通过课程来解决这个问题吗?

附:我不想在 XML 中传递变量引用,因为假设我只想使用 XML。

【问题讨论】:

    标签: android xml data-binding


    【解决方案1】:

    您似乎正在尝试在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多