Фильтрация ListView, который является частью фрагмента ViewPager - PullRequest
5 голосов
/ 28 сентября 2011

Я недавно преобразовал свое приложение из использования Activites и TabHost в использование Fragments и ViewPager из библиотеки Android Compat для API v4. Мне удалось исправить / решить большинство проблем, но я не могу сохранить прежнее поведение с фильтрацией текста в ListViews с использованиемsetTextFilterEnabled метод.

My ViewPagerAdapter содержит фрагменты, каждый из которых имеет ListView.Когда пользователи пролистывают ViewPager, я бы хотел, чтобы в настоящее время активный ListView фрагмента фильтровал текст по типу пользователя, точно так же, как я мог делать с моделью TabHost-Activity.В настоящее время похоже, что ListView первого фрагмента будет корректно реагировать, но если я проведу пальцем к следующему фрагменту и попытаюсь отфильтровать его ListView, фильтрация все равно будет применяться к первому.Если я проведу мимо первых двух, а затем отфильтрую, результаты будут недетерминированными.Текущий активный фрагмент никогда не будет применять фильтр.Иногда соседний фрагмент будет, иногда - нет.

Я попытался исправить это, добавив пользовательские обратные вызовы, которые позволяют мне отслеживать, какой фрагмент в настоящее время виден, а какой скрыт.Когда фрагмент становится видимым в качестве основного фрагмента ViewPager, я устанавливаю setTextFilterEnabled в его ListView равным true, а всем остальным - false.Похоже, это совсем не помогло (я убедился, что правильно переключал флаг для нужных фрагментов).

Я подозреваю, что для этого требуется более глубокая интеграция с ViewPager, но я не могу понять, что мне нужно для подключения.Любые идеи о том, как я могу сделать эту работу?Я счастлив, если понадобится код ACL.

1 Ответ

0 голосов
/ 24 января 2012

Вы можете реализовать метод onPageSelected extension OnPageChangeListener.Возможно, вы уже делаете это.Оттуда вы можете установить адаптер на текущий ListView или запросить свой cursorAdapter, если это так.Обратите внимание, что используемый адаптер должен реализовывать фильтруемый интерфейс.

...