#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