Android 无法为RecyclerView的DividerItemDecoration设置自定义绘图
我有一个水平显示项目的Android 无法为RecyclerView的DividerItemDecoration设置自定义绘图,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我有一个水平显示项目的RecyclerView,我想在每个项目之间添加间距(但不是在开始或结束处)。我发现并查看了官方文档中的示例,尽管我使用var声明了变量,但我得到了以下错误: 我已将我的回收器视图配置如下: myRecyclerView.apply { layoutManager = myLayoutManager adapter = myAdapter(data) addItemDecoration(divider) } 当我删除设置自定义绘图的行时,它将编译并运行。 为
RecyclerView
,我想在每个项目之间添加间距(但不是在开始或结束处)。我发现并查看了官方文档中的示例,尽管我使用var声明了变量,但我得到了以下错误:
我已将我的回收器视图配置如下:
myRecyclerView.apply {
layoutManager = myLayoutManager
adapter = myAdapter(data)
addItemDecoration(divider)
}
当我删除设置自定义绘图的行时,它将编译并运行。
为什么我会出现这个错误?您是如何设置自定义可绘制文件的?正如Commonware所指出的,它在将
divider.drawable=drawableResource
更改为divider.setDrawable(drawableResource)
后起作用,因为在DividerItemDecoration
public void setDrawable(@NonNull Drawable drawable)
@Nullable public Drawable getDrawable()
这意味着setter方法接受一个Drawable
,而getter返回一个Drawable?
。由于它们不匹配,您必须直接使用setter:
divider.setDrawable(..)
直接尝试,而不是使用Kotlin属性语法。Kotlin属性语法应该可以工作,因为
getDrawable()
和setDrawable()
都存在。但是,setDrawable()
将起作用,或者它的错误(希望)将使您更好地了解真正的根本问题。@commonware您能解释一下Kotlin属性语法在这里不起作用的原因吗?我不能即兴说。Kotlin属性语法依赖于同一类型存在匹配的getter和setter。似乎DividerItemDecoration
具有这些属性。要么您遇到了某种IDE错误,要么这里有一些我忽略的细微差别。