Я новичок в Kotlin, и мне нужно переписать следующий класс Java для Kotlin, и я не могу понять, как его реализовать.
public class TestFragment extends ListFragment {
static interface Listener {
void itemClicked(long id);
};
private Listener listener;
.....
}
Чтобы использовать «слушатель» в методах @Ovveride onAttach(..) как
override fun onAttach(Context context) {
super.onAttach(context)
listener = context as Listener
}
-----------------ОБНОВЛЯТЬ--------------------
class TestFragment: ListFragment() {
internal interface Listener {
fun itemClicked(id: Long)
}
private var listener: Listener? = null
override fun onAttach(context: Context) {
super.onAttach(context)
listener = context as Listener
}
override fun onListItemClick(listView: ListView, itemView: View, position: Int, id: Long) {
if (listener != null) {
listener!!.itemClicked(id)
}
}
Сложность, ссылка на интерфейс в классе, т.е. как я могу ссылаться на интерфейс внутри класса. Объявление свойства типа var listener = требует инициализации
Если вы используете Android Studio и копируете и вставляете этот код в свою IDE, он автоматически спросит вас, хотите ли вы, чтобы он конвертировал его в Kotlin самостоятельно.
Попробуйте это.
Тем не менее, если вы пытаетесь создать однофункциональный интерфейс в Kotlin, я бы порекомендовал вам вместо этого использовать функцию высокого порядка.
Спасибо, я даже не подумал о опции Java2Kotlin в Android Studio. Вот где живет магия. Обновлен мой вопрос с окончательным видом класса
Рад, что смог помочь! Если мой ответ поможет вам прийти к выводу, который вы искали, отметьте этот ответ как «принятый», если хотите.
Какие трудности возникают при преобразовании этого в Koltin ??