Определение типа переменной на основе сторонней библиотеки в kotlin

#android #kotlin

Вопрос:

Я использую библиотеку https://github.com/kizitonwose/CalendarView для создания календаря в Котлине.

Я пытаюсь следовать readme, но проблема в том, что в документах не указано, как calendarView объявлена переменная.

Из документов мы добавляем следующее в xml, который имеет идентификатор calendarView :

 <com.kizitonwose.calendarview.CalendarView
    android:id="@ id/calendarView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cv_dayViewResource="@layout/calendar_day_layout" />
 

Затем он продолжает показывать использование:

 calendarView.dayBinder = object : DayBinder<DayViewContainer> {
    // Called only when a new container is needed.
    override fun create(view: View) = DayViewContainer(view)
    
    // Called every time we need to reuse a container.
    override fun bind(container: DayViewContainer, day: CalendarDay) {
        container.textView.text = day.date.dayOfMonth.toString()
    }
}
 

Проблема в том, что я не вижу, как calendarView это определяется. Моя мысль была:

 val calendarView: CalendarView = findViewById(R.id.calendarView)
 

Но calendarView не имеет атрибута dayBinder .

Итак, мой вопрос в том, что я должен указать в качестве типа calendarView ? т. е.:

 val calendarView: <WHAT SHOULD BE HERE?> = findViewById(R.id.calendarView)
 

Или это следует определить по-другому?

Варианты, доступные для меня, чтобы определить calendarView : введите описание изображения здесь

Комментарии:

1. «Но у CalendarView нет атрибута dayBinder.» — это свойство on CalendarView , основанное на исходном коде

2. Вы правы, но в любом случае, как следует calendarView инициализировать?

3. Это должно быть правильно: val calendarView: CalendarView = findViewById(R.id.calendarView) так, как у вас есть.

4. Вы проверили , что импортировали нужное CalendarView , а не то android.widget.CalendarView ? Возможно, вам понадобится использовать val calendarView: com.kizitonwose.calendarview.CalendarView = ... . В Android Studio вы можете щелкнуть правой кнопкой мыши на типе CalendarView и выбрать Перейти к->Объявление, чтобы увидеть, на какой из них он указывает.

5. что делать, если вы добавите import com.kizitonwose.calendarview.CalendarView в верхней части файла?

Ответ №1:

Ваш синтаксис верен, но, вероятно, он становится android.widget.CalendarView . Добавьте импорт для сторонней библиотеки в верхнюю часть файла, и он должен работать.

 import com.kizitonwose.calendarview.CalendarView