Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
1

Фильтрование списка с сохранением id итема

22.10.2017, 19:25. Просмотров 216. Ответов 9

Пишу программу в которой есть listview, в котором n строчек - итемов. каждый итем имеет свой id. Когда я фильтрую листвью то итем, который к примеру стоял на 11 позиции и имел id = 10, становится на первое место и его айди становится = 0. Как этого избежать? Мне это нужно для того, чтобы по нажатию на итем, считывался айди, и открывался хтмл документ с соответсвующим названием. Заранее спасибо. Вот код:
Поиск:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
inputSearch.addTextChangedListener(new TextWatcher() {
 
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                //Когда пользователь вводит какой-нибудь текст:
                MainActivity.this.adapter.getFilter().filter(cs); //фильтрует итемы в списке
            }
 
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
            }
 
            @Override
            public void afterTextChanged(Editable arg0) {
            }
        });
Адаптер автоматически загружающий массив картинок и текста:
Java
1
2
3
4
5
6
7
8
9
10
11
12
ArrayList<HashMap<String,String>> arrayList=new ArrayList<>();
            for (int i=0;i<bol.length;i++)
            {
                HashMap<String,String> hashMap=new HashMap<>();//создать хеш для хранения данных в ключ и значение
                hashMap.put("name",bol[i]);//вложить в
                hashMap.put("image",boli[i]+"");
                arrayList.add(hashMap);//добавить хешмап в аррейлист
            }
            String[] from={"name","image"};//строковый массив
            int[] to={R.id.tex,R.id.imageView2};//int array of views id's
            simpleAdapter=new SimpleAdapter(this,arrayList,R.layout.stroka,from,to);//Создайте объект и задайте параметры для simpleAdapter
            listView.setAdapter(simpleAdapter);//задает адаптер для ListView
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2017, 19:25
Ответы с готовыми решениями:

Изменение размера итема после изменения размера списка
Имеется вот такой ListView &lt;ListView x:Name=&quot;lstRooms&quot; Margin=&quot;10&quot;&gt; ...

Фильтрование по времени
Создал базу с помощь TClientDataSet, есть поле Дата, есть два DateEdit, нужно фильтровать от первой...

Фильтрование и SQL запросы
Здравствуйте! Подскажите как реализовать следующее: Допустим есть таблица &quot;Книги&quot;, она состоит...

Датчик Холтера (ЭКГ), фильтрование данных
Кто подскажет как нужно фильтровать данные полученные от датчика Холтера (500Гц, несколько каналов...

Radiogroup, имя итема
Здравствуйте, форумчане! Собственно задача: На форме расположен RadioGroup, на нём есть Items....

9
ExFau$t
763 / 629 / 157
Регистрация: 08.05.2012
Сообщений: 3,074
22.10.2017, 19:43 2
Ничего не понятно, что значит фильтровать listview. И это не id становится 0, а позиция. Если не охота свой адаптер делать, фильтруй arraylist, а позицию бери из статичного списка.
0
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
22.10.2017, 20:08  [ТС] 3
У меня есть листвью, который заполняется с помощью адаптера. Заполняется итемами, наполнение которых заполняется из шаблона, но это неважно. Проблемма в том, что если ввести в поиске некий заголовок, то в списке позиция этого заголовка будет уже не пятая к примеру, а первая и id уже будет другим, во второе активити значения подставять не с пятого id а уже с первого.
Вот чем то похожая проблема, но ее решение не описано

Добавлено через 40 секунд
0
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
22.10.2017, 20:14  [ТС] 4
вот поясняющий скриншот
0
Миниатюры
Фильтрование списка с сохранением id итема  
22.10.2017, 20:14
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
22.10.2017, 20:25  [ТС] 5
Может можно как то сделать элементы невидимыми, или сделать у них нулевую высоту, но я понятия не имею как это сделать...
0
ExFau$t
763 / 629 / 157
Регистрация: 08.05.2012
Сообщений: 3,074
22.10.2017, 20:26 6
Цитата Сообщение от ExFau$t Посмотреть сообщение
бери из статичного списка
Там позиция постоянная.
0
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
22.10.2017, 20:30  [ТС] 7
Цитата Сообщение от ExFau$t Посмотреть сообщение
Ничего не понятно, что значит фильтровать listview. И это не id становится 0, а позиция. Если не охота свой адаптер делать, фильтруй arraylist, а позицию бери из статичного списка.
Как это осуществить?

Добавлено через 59 секунд
Цитата Сообщение от ExFau$t Посмотреть сообщение
Там позиция постоянная.
Подскажи как это можно сделать?
0
ExFau$t
763 / 629 / 157
Регистрация: 08.05.2012
Сообщений: 3,074
22.10.2017, 20:37 8
Ну тупо создай дубликат фильтруемого листа и не трогай его, там при любом случае все элементы будут на своих позициях. Оттуда и доставай свои позиции.
0
Artemiks
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 16
22.10.2017, 21:16  [ТС] 9
если у меня 500 файлов xtml пронумерованных от 1 до 500. как я буду координировать взаимосвязь между выбранным итемом и открывшимся файлом? как программа поймет что именно для этого итема надо к примеру открыть 100ый файл? если этот итем стоит на первом месте? это можно сделать только привязав к какому то идентификатору, таким идентификатором может быть только айди. но он к сожалению почему то меняется изза поиска. я не понимаю как должно работать то что вы предлагаете.
единственный возможный вариант кака я думаю это просто сделать нулевую высоту для отфильтрованных итемов, тогда по идее айдишники не должны поменяться

Добавлено через 1 минуту
должно получиться что то на подобии справочника в котором можно листать и искать по названию
0
ExFau$t
763 / 629 / 157
Регистрация: 08.05.2012
Сообщений: 3,074
22.10.2017, 23:27 10
Я не знаю, что у тебя за файлы и как они связаны с итемами, пиши короче свой адаптер для recycleView и делай там какие хочешь связи, если так не можешь.
Моя идея очень простая из школьной программы, завести дубликат-лист с этими твоими файлами или их именами, короче тем, что связывает итем с файлом, позиция это порядок в этом листе, он не меняется в отличие от листа в listview. Произошла сортировка и итем "Файл5" оказался на позиции 0, ты идёшь в дубль-лист ищешь там "Файл5" и получаешь позицию этого элемента (5я) - вуаля. Опять же, если не охота делать адаптер аки босс.
0
22.10.2017, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2017, 23:27

QItemDelegate Собития итема
Привет, есть список QListViev есть делегат унаследованный от QItemDelegate. Рисую отображение...

Цвет текста итема в ListView
Пробовал код // пример вызова функции (см. ниже) для смены цвета:...

RadioGroup изменить стиль итема
Всем доброго времени суток. На форме имеется RadioGroup? хочу сделать пометку допустим нужный...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru