使用Kotlin 12编译时出现函数声明错误

使用Kotlin 12编译时出现函数声明错误,kotlin,Kotlin,我继承了一个旧的Kotlin代码库,试图用最新的编译器编译时遇到了很多问题。我很难弄清楚的是这些奇怪的函数在一个班的中间出现,没有任何明显的调用。我想知道是否有人知道这曾经是什么,以及它在更新版本的Kotlin中被什么所取代 public class SomeAdapter(val friends: SomeAdapterProvider, val listener: OnItemClickedListener) : RecyclerView.Adapter<SomeAdapter.Vie

我继承了一个旧的Kotlin代码库,试图用最新的编译器编译时遇到了很多问题。我很难弄清楚的是这些奇怪的函数在一个班的中间出现,没有任何明显的调用。我想知道是否有人知道这曾经是什么,以及它在更新版本的Kotlin中被什么所取代

public class SomeAdapter(val friends: SomeAdapterProvider, val listener: OnItemClickedListener) : RecyclerView.Adapter<SomeAdapter.ViewHolder>() {

    trait OnItemClickedListener {
        fun onItemClicked(f: Friendship)
    }

    private inner class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
        override fun onClick(v: View) {
            listener.onItemClicked(somethings[getPosition()])
        }

        val text: TextView by inject(android.R.id.text1)
        val image: Picture by inject(R.id.imageview);

        {
            itemView setOnClickListener this
        }
    }

    {
        setHasStableIds(true)
    }
}
公共类SomeAdapter(val-friends:SomeAdapterProvider,val-listener:OnItemClickedListener):RecyclerView.Adapter(){
McClickedListener的特性{
乐趣(f:友谊)
}
私有内部类ViewHolder(v:View):RecyclerView.ViewHolder(v),View.OnClickListener{
覆盖趣味onClick(v:视图){
onItemClicked(somethings[getPosition()]))
}
val text:TextView by inject(android.R.id.text1)
val图像:注入图像(R.id.imageview);
{
itemView设置单击此侦听器
}
}
{
SetHassTableId(真)
}
}

具体来说,所讨论的行是
itemView setOnClickListener this
setHasStableIds(true)
,它们都位于刚刚挂起的大括号之间。

在这两个功能块前面加上“init”,
请参见

在这两个功能块前面加上“init”前缀,
请参见

在这两个功能块前面加上“init”前缀,
请参见

在这两个功能块前面加上“init”前缀,
请参见@Andrey在对问题的评论中指出的,以及@D3xter的回答(将
init
添加到),以下是更新的代码(供参考):

公共类SomeAdapter(val-friends:SomeAdapterProvider,val-listener:OnItemClickedListener):RecyclerView.Adapter(){
McClickedListener的特性{
乐趣(f:友谊)
}
私有内部类ViewHolder(v:View):RecyclerView.ViewHolder(v),View.OnClickListener{
覆盖趣味onClick(v:视图){
onItemClicked(somethings[getPosition()]))
}
val text:TextView by inject(android.R.id.text1)
val图像:注入图像(R.id.imageview);
init{//已在此处修复
itemView设置单击此侦听器
}
}
init{//已在此处修复
SetHassTableId(真)
}
}

正如@Andrey在其对问题的评论中所指出的,以及@D3xter(将
init
添加到)的回答,以下是更新的代码(供参考):

公共类SomeAdapter(val-friends:SomeAdapterProvider,val-listener:OnItemClickedListener):RecyclerView.Adapter(){
McClickedListener的特性{
乐趣(f:友谊)
}
私有内部类ViewHolder(v:View):RecyclerView.ViewHolder(v),View.OnClickListener{
覆盖趣味onClick(v:视图){
onItemClicked(somethings[getPosition()]))
}
val text:TextView by inject(android.R.id.text1)
val图像:注入图像(R.id.imageview);
init{//已在此处修复
itemView设置单击此侦听器
}
}
init{//已在此处修复
SetHassTableId(真)
}
}

正如@Andrey在其对问题的评论中所指出的,以及@D3xter(将
init
添加到)的回答,以下是更新的代码(供参考):

公共类SomeAdapter(val-friends:SomeAdapterProvider,val-listener:OnItemClickedListener):RecyclerView.Adapter(){
McClickedListener的特性{
乐趣(f:友谊)
}
私有内部类ViewHolder(v:View):RecyclerView.ViewHolder(v),View.OnClickListener{
覆盖趣味onClick(v:视图){
onItemClicked(somethings[getPosition()]))
}
val text:TextView by inject(android.R.id.text1)
val图像:注入图像(R.id.imageview);
init{//已在此处修复
itemView设置单击此侦听器
}
}
init{//已在此处修复
SetHassTableId(真)
}
}

正如@Andrey在其对问题的评论中所指出的,以及@D3xter(将
init
添加到)的回答,以下是更新的代码(供参考):

公共类SomeAdapter(val-friends:SomeAdapterProvider,val-listener:OnItemClickedListener):RecyclerView.Adapter(){
McClickedListener的特性{
乐趣(f:友谊)
}
私有内部类ViewHolder(v:View):RecyclerView.ViewHolder(v),View.OnClickListener{
覆盖趣味onClick(v:视图){
onItemClicked(somethings[getPosition()]))
}
val text:TextView by inject(android.R.id.text1)
val图像:注入图像(R.id.imageview);
init{//已在此处修复
itemView设置单击此侦听器
}
}
init{//已在此处修复
SetHassTableId(真)
}
}

下面是代码的固定版本(正如@D3xter在下面建议的):固定版本应该是一个答案,没有外部链接,内容可能会消失或移动。下面是代码的固定版本(正如@D3xter在下面建议的):固定版本应该是一个答案,没有外部链接,内容可能会消失或移动。下面是代码的固定版本(正如@D3xter在下面建议的):固定版本应该是一个答案,没有外部链接,内容可能会消失或移动。下面是代码的固定版本(正如@D3xter在下面建议的):固定版本应该是一个答案,没有外部链接,内容可能会消失或移动。我在下面添加了它以供参考。太好了,非常感谢您的修复和对更改的参考!太好了,非常感谢您的修复和对更改的引用!太好了,非常感谢您的修复和对更改的引用!太好了,非常感谢您的修复和
public class SomeAdapter(val friends: SomeAdapterProvider, val listener: OnItemClickedListener) : RecyclerView.Adapter<SomeAdapter.ViewHolder>() {

    trait OnItemClickedListener {
        fun onItemClicked(f: Friendship)
    }

    private inner class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
        override fun onClick(v: View) {
            listener.onItemClicked(somethings[getPosition()])
        }

        val text: TextView by inject(android.R.id.text1)
        val image: Picture by inject(R.id.imageview);

        init { // FIXED here
            itemView setOnClickListener this
        }
    }

    init { // FIXED here
        setHasStableIds(true)
    }
}