Если честно, я не знал, что писать как заголовок для этого вопроса, потому что он немного сложный.Как начать фрагмент после ввода SearchView
У меня есть деятельность, фрагмент и адаптер.
Актив имеет ViewPager
, который является адаптером FragmentStatePagerAdapter
, и в зависимости от выбранного элемента или позиции он создает новый экземпляр фрагмента.
Адаптер фрагментов загружает список элементов в RecyclerView
. Каждый новый экземпляр в FragmentStatePagerAdapter
представляет собой другой строковый массив для RecyclerView
.
Я установил поиск на панели инструментов для активности, и когда в поиске есть вход, он должен запустить функцию во фрагменте.
Эти функции фрагмента, которые слушатели поиска
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
performSearch(s);
return false;
}
@Override
public boolean onClose() {
performSearch(null);
return false;
}
private void performSearch(final String query) {
if (mTimer != null) {
mTimer.cancel();
mTimer.purge();
}
mTimer = new Timer();
mHandler = new Handler();
mTimer.schedule(new TimerTask() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
mAdapter.filter(query);
}
});
}
}, 150);
}
Дело в том, что я не знаю, как получить текущий фрагмент, так что я могу установить fragment.onQueryTextChange(searchInput)
и предотвратить его создавая новый экземпляр фрагмента.
Что я хочу сделать, короче говоря, возможность получить фрагмент с его уже определенным экземпляром и заставить его фильтровать массив, определенный в экземпляре, с текстом на входе поиска, в том же действии и на странице от ViewPager
.
Я не знаю, был ли я достаточно ясным. Но если вы можете помочь, я буду очень благодарен.
У меня есть ViewPager, и его адаптер является FragmentStatePagerAdapter –
и whre является проблемой? вы можете получить фрагмент из адаптера с помощью getItem() – Kikju