2015-09-14 77 views
0

我已经继承了旧的Kotlin代码库,并试图用最新的编译器进行编译时遇到了许多问题。我遇到麻烦的一个就是这些奇怪的功能,在课堂中间闲逛,没有任何明显的呼叫。我想知道是否有人知道这个曾经是什么,以及它在新版本的Kotlin中取代了什么?使用Kotlin编译时的函数声明错误12

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) 
    } 
} 

具体地说,所讨论的行是itemView setOnClickListener thissetHasStableIds(true),二者在其之间括号只是挂。

+1

这里是你的代码的固定版本(如@ D3xter以下建议):https://gist.github.com/abreslav/176c69cd809d79e96c71 –

+0

固定的版本应豆回答,而没有外部链接,内容可能会消失或移动。我在下面添加它作为参考。 –

回答

0

正如@Andrey在他的问题意见指出,并连同答案来自@ D3xter那些2个功能块(添加initinitialization blocks),在这里是(仅供参考),更新后的代码:

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) 
    } 
} 
相关问题