具有可绘制参数的 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) {
绑定适配器代码:
@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) {