Объявление внутреннего интерфейса Kotlin в классе

Я новичок в 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)
        }
    }

Какие трудности возникают при преобразовании этого в Koltin ??

Xid 20.12.2020 19:18

Сложность, ссылка на интерфейс в классе, т.е. как я могу ссылаться на интерфейс внутри класса. Объявление свойства типа var listener = требует инициализации

27P 20.12.2020 19:23
0
2
483
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете Android Studio и копируете и вставляете этот код в свою IDE, он автоматически спросит вас, хотите ли вы, чтобы он конвертировал его в Kotlin самостоятельно.

Попробуйте это.

Тем не менее, если вы пытаетесь создать однофункциональный интерфейс в Kotlin, я бы порекомендовал вам вместо этого использовать функцию высокого порядка.

Спасибо, я даже не подумал о опции Java2Kotlin в Android Studio. Вот где живет магия. Обновлен мой вопрос с окончательным видом класса

27P 20.12.2020 19:44

Рад, что смог помочь! Если мой ответ поможет вам прийти к выводу, который вы искали, отметьте этот ответ как «принятый», если хотите.

Ivan Garza 20.12.2020 19:46

Другие вопросы по теме