Android - количество фильтров списка

Итак, после того, как я установил фильтр в своем списке:

//Log adapter count before filter
listView.getFilter().filter(searchStr)
//Log adapter count after filter

Чего я пытаюсь добиться, так это подсчитать результат этой фильтрации. Например, если раньше было 10 элементов, то я применяю фильтр, поэтому теперь будет отображаться только 5 элементов, я хочу получить этот счет «5». Я безуспешно пытался проверить количество адаптеров до и после фильтра. Они отображают одно и то же количество (я использую BaseExpandableListAdapter), если я применяю фильтр, и если я применяю фильтр снова, число изменяется по сравнению с предыдущим (но до и после фильтра остается прежним).

Ниже приведен пример результата того, что я получаю в своих журналах:

Before filter the count is 10. After filter the count is 10.
Before filter the count is 8.  After filter the count is 8.

Я подумал, что, возможно, мой адаптер не сразу получает отраженный счетчик, но во втором фильтре он меняет значение, поэтому я подумал, что notifyDataSetChanged после фильтра будет иметь значение, но это не так. Любая помощь будет оценена по достоинству.

Спасибо.


person villager    schedule 31.01.2013    source источник


Ответы (2)


Вот как мне удалось это сделать:

myAdapter.getFilter().filter(searchText, new Filter.FilterListener() {
    public void onFilterComplete(int count) {
         Log.d("log", "result count:" + count);
    }
});
person villager    schedule 28.02.2013
comment
это фактически решило исходную проблему, а также еще одну: мой список появлялся со всеми элементами на долю секунды из-за того, что фильтр работает в Asynctask прозрачно, а setAdapter вызывался до того, как на самом деле произошло publishResults - person leRobot; 03.04.2014
comment
Отсутствующий ); в вашем коде он открыт рядом с фильтром (но без закрывающей скобки. Поэтому добавьте); в конце - person sasikumar; 08.09.2015
comment
stackoverflow.com/questions/13114966 / - person samis; 12.09.2018

Попробуйте позвонить listview.getCount() после применения фильтра.

person Purush Pawar    schedule 31.01.2013
comment
Я использую ExpandableListView. И использование этого возвращает количество групп, а не количество дочерних элементов в каждой группе. - person villager; 31.01.2013