Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
217 / 217 / 21
Регистрация: 19.01.2013
Сообщений: 1,587
Записей в блоге: 2
#1

Показывать или скрывать записи в адаптере - Android

26.07.2016, 10:44. Просмотров 167. Ответов 8
Метки нет (Все метки)

Создаю адаптер со всеми записями для RecycleView

а потом нажимаю кнопку и меняю условие отображение (например должны отображаться только те записи у которых поле vis == true)

Вопрос:

Нужно каждый раз при смене условия отображения создавать новый адаптер или есть более правильные и быстрые способы обновления контента RecycleView согласно условиям?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 10:44     Показывать или скрывать записи в адаптере
Посмотрите здесь:

Показывать изображения, если они есть в Кэше Android
Как заставить ListView показывать ограниченное количество элементов? Android
Загрузки изображений из сети в адаптере GridView Android
Убить поток в адаптере Android
Android Поиск по ListView основанному на кастомном адаптере
ActionBar, всегда показывать троеточие Android
Не обновлять айтемы в адаптере когда скроллим список Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
26.07.2016, 11:13     Показывать или скрывать записи в адаптере #2
После изменения условий вызови в адаптере notifyDataSetChanged.
ILNAR_93
Android
217 / 217 / 21
Регистрация: 19.01.2013
Сообщений: 1,587
Записей в блоге: 2
26.07.2016, 11:14  [ТС]     Показывать или скрывать записи в адаптере #3
Mikalai, т.е. просто заменяю адаптер и делаю notifyDataSetChanged?

Спасибо
petruchodd
89 / 89 / 8
Регистрация: 23.06.2009
Сообщений: 507
26.07.2016, 12:35     Показывать или скрывать записи в адаптере #4
ты когда передаешь в адаптер какие-то ресурсы (например arraylist<string>) , то когда делаешь изменения в этом листе , просто вызываешь notifyDataSetChanged() после изменений и адаптер поймет, что нужно перерисовать данные.
ILNAR_93
Android
217 / 217 / 21
Регистрация: 19.01.2013
Сообщений: 1,587
Записей в блоге: 2
26.07.2016, 14:09  [ТС]     Показывать или скрывать записи в адаптере #5
Делаю так:
Java
1
2
3
4
5
6
7
8
lst - меняю как надо по условию (в итоге там 0 элементов)
 
adapter = new PeopleNearListAdapter(lst, getActivity());
        if (lvMain.getAdapter()!=null){
            lvMain.getAdapter().notifyDataSetChanged(); // так нечего не меняется, а если вместо этого выполнить lvMain.setAdapter(adapter); то все работает 
        } else {
            lvMain.setAdapter(adapter);
        }
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
26.07.2016, 16:31     Показывать или скрывать записи в адаптере #6
ILNAR_93, у вас стоит условие смены адаптера. Причём, меняете вы его только первый раз, а когда он уже присвоен, то просто перерисовываете. Однако здесь и кроется ошибка. Скорее всего, вы пересоздаёте коллекцию lst, в итоге адаптер обращается к старой коллекции, которая уже находится в "мусоре", и выводит 0 записей.
ILNAR_93
Android
217 / 217 / 21
Регистрация: 19.01.2013
Сообщений: 1,587
Записей в блоге: 2
26.07.2016, 16:42  [ТС]     Показывать или скрывать записи в адаптере #7
CoolMind,
по условию там должно быть 0 записей - т.е. нет в БД записей которые соответствуют условию
в итоге мой listview должен быть пустым, а он не меняется (как будто не срабатывает notifyDataSetChanged)


Вроде начал понимать вашу мысль ) Сейчас посмотрю

Добавлено через 35 секунд
Java
1
2
3
4
5
6
7
if (lvMain.getAdapter()!=null){
            adapter.nearPeoples = lst;
            lvMain.getAdapter().notifyDataSetChanged(); 
        } else {
            adapter = new PeopleNearListAdapter(lst, getActivity());
            lvMain.setAdapter(adapter);
        }
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,207
Завершенные тесты: 1
26.07.2016, 16:46     Показывать или скрывать записи в адаптере #8
та шо там понимать, он говорит о том, что неправильно пересоздавать список каждый раз
список должен быть один, просто туда записи накидывать через add или удалять remove
и тогда будет работать notifi и не нужно будет каждый раз делать setAdapter
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 16:47     Показывать или скрывать записи в адаптере
Еще ссылки по теме:

Скрывать Toolbar при пролистывании ListView Android
Как при повороте экрана показывать видео дальше, а не сначала Android
Android Filterable не понимаю как в адаптере взять String значение по позиции ?
Назначить идентификаторы кнопкам в адаптере списка Android
NullPointerException в адаптере RecyclerView Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ILNAR_93
Android
217 / 217 / 21
Регистрация: 19.01.2013
Сообщений: 1,587
Записей в блоге: 2
26.07.2016, 16:47  [ТС]     Показывать или скрывать записи в адаптере #9
Паблито, понял
Yandex
Объявления
26.07.2016, 16:47     Показывать или скрывать записи в адаптере
Ответ Создать тему
Опции темы

Текущее время: 09:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru