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错误,要么这里有一些我忽略的细微差别。