2017-05-19 34 views
1

既然谷歌正式支持Kotlin作爲Android的主要(或即將)語言,那麼我正試圖翻譯我的一個項目。儘管Android Studio中內置的「翻譯」工作得很好,它顯然不能轉化爲RecyclerViewKotlin - 如何爲RecyclerVIew實現ItemClickListener

作爲例子,ItemClickListener這是我有:

在java中,我使用this class我在GitHub上找到它來實現它。

這是我的Java代碼:

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

如何設置在科特林一個RecyclerView的ItemClickListener?

回答

3

實際上,您可以將粘貼的Java代碼複製到Kotlin文件中,然後使用內置的轉換器獲取Kotlin代碼。

(您也可以調用該轉換器的整個Java文件,按Ctrl + Alt鍵++ķ在Windows上,^⌥⇧K在Mac上,或通過代碼菜單 - >將Java文件到文件科特林)

什麼它給你如下:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener { recyclerView, position, v -> 
    // ... 
} 

這米碟剎使用SAM conversion,相當於在調用函數的這個更長,更類似於Java的形式:

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

謝謝,我是很新,科特林,並試圖瞭解它。你的回答幫了我很多。我不得不使用更長的形式,因爲短的形式表示它不能推斷參數類型,即使我可以輕鬆指定它們。 – Daniele

+1

您可以給lambda參數顯式類型,如'v:View'等,如果幫助。但無論如何,歡迎,並享受語言! :) – zsmb13

相關問題