Решил сделать в списке групировку по датам, что то подобное такому:
27 february
item1
item2
26 february
item1
Возникла проблема в составлении условия по которому дата должна быть добалена в список. Код getItemViewType
:
var previousDate = ""
override fun getItemViewType(position: Int): Int {
val currentDate = batteryStories[position].date.toFormatDate(DATE_FORMAT)
if(currentDate != previousDate){
previousDate = currentDate
return HEADER_VIEW_INDEX
}
return BODY_VIEW_INDEX
}
Данное пробное решение работает только при первичной прогрузке списка и прокрутка проводит к хаосу. В результате нескольких прокруток выходит нечто такое (дата выводиться при первом появлении уникальной даты в списке):
item1
item2
27 february
item1
26 february
Даже при удачном результате мне кажется сравнение строк это не лучший вариант. Как лучше реализовать подобное?
Что бы не было хаоса при прокрутке, нужно в onBindViewHolder()
обязательно добавлять вначале явное указание состояния вьюхи (например: myViewHolder.tvDate.setVisibility(View.INVISIBLE))
, а дальше уже ставить ей видимость при необходимости. Дело в том что контейнеры в RecyclerView переиспользуются и мы получаем такую вот интересную ситуацию.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне нужно закрывать listening порт(например, 12000, который создается java методом serversocketaccept) в определённый момент(неизвестно когда он наступит)
Вызов данного контроллера выдает ошибку:
Запускаю этот проект через Tomcat https://githubcom/CaymanJava/online_banking
Сейчас я использую вот такой методМожет есть более хорошие методы?