我正在嘗試從一個操作傳遞一個偵聽器到一個類(一個適配器)。傳遞偵聽器對象作爲函數參數在kotlin
在java中(代碼從Action):
private void setListeners() {
adapterRecyclerView.setListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
SomeCodehere....
}
});
}
(代碼從適配器)
public void setListener(View.OnClickListener listener) {
this.listener = listener;
}
它的工作原理。
現在我試圖traitslate kotlin。我首先翻譯動作(將動作翻譯爲kotlin):
private fun setListeners() {
// !! is not fine i know
adapterRecyclerView!!.setListener { v ->
SomeCodehere....
}
}
此時仍然有效。使用適配器的代碼仍然在java和kotlin中類的代碼。現在我將適配器翻譯成kotlin:
fun setListener(listener: View.OnClickListener) {
this.listener = listener
}
現在它不工作。該行動不編譯。
錯誤: 無法推斷此參數「v」的類型。 需要View.OnClickListener。發現(???)單位爲 。
我該如何做演員? 爲什麼要將參數從kotlin傳遞給java工作,並從kotlin傳遞給kotlin,它不會呢?
它的工作,非常感謝你! –
只是一個友好的建議:!!應避免操作員。否則,您將無法利用kotlin的無效安全功能。通過事先檢查adapterRecyclerView的可空性,可以對非空對象進行非精確轉換。 – Ahmad
同意。我只保留了問題中提出的代碼結構 – Joakim