Я пытаюсь отобразить прогноз погоды на 5 дней, но карта openweathermap дает мне прогноз погоды на 5 дней / 3 часа. Я хочу отображать только погоду в 15:00.
Я использую оператор if с одним из даты и времени, и если вы видите мой эмулятор, он отображает одну и ту же дату и время много раз, а также отображает весь файл JSON в виде пустых текстов. Есть идеи по этому поводу, пожалуйста?

Вот мое заявление if
if (weatherFor.dt_txt= = "2018-08-21 00:00:00") {
holder?.view?.textWeatherDataForecast?.text = "${weatherFor.weather.map { it.description }.joinToString(",")} on ${date}"
holder?.view?.tempTextForecast?.text = weatherFor.main.temp.toString() + "°C"
}
@karthikprasad Что вы имеете в виду? (извините, я новичок в этом)
вы можете поделиться своим объектом ForecastWeatherList?
Итак, вам нужно изменить пару вещей.
Оператор IF, который вы добавили, просто задает текст для условия, а остальные оставьте со строками по умолчанию. Для этого нужно изменить код, как показано ниже. Это удалит ваши лишние TextViews.
if (weatherFor.dt_txt= = "2018-08-21 00:00:00")
{
holder?.view?.textWeatherDataForecast?.text = "${weatherFor.weather.map { it.description }.joinToString(",")} on ${date}"
holder?.view?.tempTextForecast?.text = weatherFor.main.temp.toString() + "°C"
}
else
{
holder?.view?.visibility = View.GONE
}
Но в идеале вы должны фильтровать свой ответ, чтобы в списке были только данные о погоде на 15:00. вы можете погуглить, как фильтровать список, используя метод list.filter {predicate}.
Дата синтаксического анализа должна быть выполнена таким образом, чтобы получить время 15:00:00 и добавить условие if только для 15:00:00.
val localDateFormat = SimpleDateFormat("HH:mm:ss")
val dt_time: String = localDateFormat.format(date)
if (dt_time == "15:00:00"){
// your set holder text goes here
}
Отредактировано:
Добавьте переменную в свой класс адаптера
lateinit var weatherList: List<ForecastWeatherList>
Добавить блок инициализации
init{
weatherList = forecastfeed.list.filter{ //add your condition here this should plain condition which gives true or false like it.dt_txt = = "15:00:00" }
}
Внутри вашего getItemCount () замените
weatherList.count()
Огромное спасибо !!! Теперь проблема в том, что он отображает то, что я хочу, но с большим белым промежутком. Как мы можем вообще не добавлять элементы, если время не в 3 часа?
вы должны фильтровать содержимое списка по времени. Отредактировал ответ. Пожалуйста, примите и проголосуйте за ответ, если он поможет.
не могли бы вы вставить образец ответа?