#java #android #api #date #kotlin
Вопрос:
У меня есть API, который публикует и получает даты:
это класс данных:
data class PlannerGet(
val date: String,
val endTime: String,
val id: Int,
val location: String,
val note: String,
val startTime: String,
val title: String
)
и я использую эту библиотеку для календаря:
https://github.com/VarunBarad/Highlightable-Calendar-View
теперь во фрагменте я смог выделить определенные дни, подобные этому:
HighlightableCalendarView.dayDecorators = listOf(
DayDecorator(
Calendar.getInstance().apply {
set(Calendar.DAY_OF_MONTH, 4)
},
Color.parseColor("#ffffff"),
Color.parseColor("#ff0000")
),
)
но я хочу выделить те дни, когда я пытался сделать это так
:
HighlightableCalendarView.dayDecorators = listOf(
DayDecorator(
Calendar.getInstance().apply {
set(PlannerGet.date)
},
Color.parseColor("#ffffff"),
Color.parseColor("#ff0000")
),
)
но у меня возникла проблема с «набором», он показывает, что «Ни одна из следующих функций не может быть вызвана с предоставленными аргументами».
я попытался добавить «toInt()» и все та же проблема.
каков правильный способ достичь этого?
Комментарии:
1. Я рекомендую вам не использовать
Calendar
. Этот класс плохо спроектирован и давно устарел. Вместо этого используйтеLocalDate
из java.time, современный API даты и времени Java .
Ответ №1:
Это происходит потому, что параметры, которые вы передаете, не соответствуют требуемым параметрам.
Calendar.getInstance().apply {
set(Calendar.DAY_OF_MONTH, 4)
}
Функции набора принимают поле int, значение int, но вы передаете параметры в виде строки
PlannerGet.date
Набор функций
public void set(int field, int value) {
throw new RuntimeException("Stub!");
}
Если вы хотите, чтобы дата передавалась из дат API, пожалуйста, преобразуйте строковые даты в объект даты java.
Ответ №2:
решение:
if (response?.body().toString() == "[]") {
}
else if (response.isSuccessful) {
response.body()?.forEach {
getplanner.add(it)
Log.e("gggg gggg",getplanner.toString())
Log.e("gggg ddddd",getplanner[0].date)
}
val list = arrayListOf<DayDecorator>()
for (dsds in getplanner) {
list.add( DayDecorator(
Calendar.getInstance().apply {
// getplanner[0].date
val input_date = dsds.date
val format1 = SimpleDateFormat("yyyy-MM-dd")
var dt1: Date? = null
dt1 = format1.parse(input_date)
val format2: DateFormat = SimpleDateFormat("dd")
val strMonth: String = format2.format(dt1)
val month = strMonth.toInt()
Log.e("dateinplanner", "" month)
set(Calendar.DAY_OF_MONTH, month)
},
Color.parseColor("#ffffff"),
Color.parseColor("#1AB7B8")
))
}
HighlightableCalendarView.dayDecorators = list