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