Android Kotlin-如何为RecyclerVIew实现ItemClickListener

Android Kotlin-如何为RecyclerVIew实现ItemClickListener,android,kotlin,Android,Kotlin,现在谷歌正式支持Kotlin作为android的主要(或即将成为)语言,我正试图翻译我的一个项目。尽管Android Studio内置的“Translator”工作得很好,但它显然无法将ItemClickListener转换为RecyclerView 作为一个例子,我有: 在java中,我使用在GitHub上找到的工具来实现它 这是我的Java代码: ItemClickSupport.addTo(recyclerView).setOnItemClickListener(new ItemClick

现在谷歌正式支持Kotlin作为android的主要(或即将成为)语言,我正试图翻译我的一个项目。尽管Android Studio内置的“Translator”工作得很好,但它显然无法将
ItemClickListener
转换为
RecyclerView

作为一个例子,我有:

在java中,我使用在GitHub上找到的工具来实现它

这是我的Java代码:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
                @Override
                public void onItemClicked(RecyclerView recyclerView, int position, View v) {
                    ...
            });

如何在Kotlin中为RecyclerView设置ItemClickListener?

实际上,您只需将Java代码复制粘贴到Kotlin文件中,就可以使用内置转换器获得执行相同操作的Kotlin代码

(您也可以在Windows上使用Ctrl+Alt+Shift+K对整个Java文件调用此转换器^⌥⇧Mac上的K,或通过“代码->将Java文件转换为Kotlin文件”菜单。)

它为您提供了以下信息:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener { recyclerView, position, v ->
    // ...
}
这利用了调用函数的更长、更像Java的形式,并与之等效:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener(
        object : ItemClickSupport.OnItemClickListener {
            override fun onItemClicked(recyclerView: RecyclerView?, position: Int, v: View?) {
                 // ...
            }
        }
)

实际上,您只需将该Java代码复制粘贴到Kotlin文件中,就可以使用内置转换器获得执行相同操作的Kotlin代码

(您也可以在Windows上使用Ctrl+Alt+Shift+K对整个Java文件调用此转换器^⌥⇧Mac上的K,或通过“代码->将Java文件转换为Kotlin文件”菜单。)

它为您提供了以下信息:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener { recyclerView, position, v ->
    // ...
}
这利用了调用函数的更长、更像Java的形式,并与之等效:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener(
        object : ItemClickSupport.OnItemClickListener {
            override fun onItemClicked(recyclerView: RecyclerView?, position: Int, v: View?) {
                 // ...
            }
        }
)

谢谢,我对科特林很陌生,正在努力学习。你的回答对我帮助很大。我不得不使用较长的形式,因为较短的形式表示它无法推断参数类型,即使我可以很容易地指定它们,您可以给lambda参数显式类型,如
v:View
等,如果有帮助的话。但无论如何,欢迎你,享受这门语言谢谢,我对科特林很陌生,正在努力学习。你的回答对我帮助很大。我不得不使用较长的形式,因为较短的形式表示它无法推断参数类型,即使我可以很容易地指定它们,您可以给lambda参数显式类型,如
v:View
等,如果有帮助的话。但无论如何,欢迎你,享受这门语言