具有可绘制参数的 BindingAdapter 不接受可绘制参数

BindingAdapter with drawable parameter not accepting drawable parameter

绑定适配器代码:

    @BindingAdapter(value = ["vertical_divider_decorator_drawable"], requireAll = false)
    @JvmStatic
    fun bindRecyclerViewDivider(recyclerView: RecyclerView, vertical_divider_decorator_drawable: Drawable) {
        val decorator = DividerItemDecoration(recyclerView.context, RecyclerView.VERTICAL)
        decorator.setDrawable(vertical_divider_decorator_drawable)
        recyclerView.addItemDecoration(decorator)
    }

    @BindingAdapter(value = ["vertical_divider_decorator_drawable"], requireAll = false)
    @JvmStatic
    fun bindRecyclerViewDivider(recyclerView: RecyclerView, vertical_divider_decorator_drawable: Int ) {
        val decorator = DividerItemDecoration(recyclerView.context, RecyclerView.VERTICAL)
        ResourcesCompat.getDrawable(recyclerView.context.resources, vertical_divider_decorator_drawable, null)
            ?.let { drawable -> decorator.setDrawable(drawable) }
        recyclerView.addItemDecoration(decorator)
    }

XML 中的 RecyclerView:

     <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:vertical_divider_decorator_drawable="@drawable/row_divider"
        android:id="@+id/list"
        />

构建错误:

AAPT: error: attribute vertical_divider_decorator_drawable (aka com.package:vertical_divider_decorator_drawable) not found.

BindingAdapter 同时具有 Drawable 和 Int 参数,但编译器仍然不接受这两个 drawbales。

尝试改变: app:vertical_divider_decorator_drawable="@drawable/row_divider" 到: app:vertical_divider_decorator_drawable="@{@drawable/row_divider}"

如果没有帮助,试试这个: fun bindRecyclerViewDivider(recyclerView: RecyclerView, vertical_divider_decorator_drawable: Int) {