2015-09-14 45 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) 
    } 
}