【发布时间】:2015-07-11 20:25:40
【问题描述】:
说实话,我不知道这个问题的标题应该写什么,因为它有点复杂。
我有一个活动、一个片段和一个适配器。
Activity 有一个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。
我不知道我是否足够清楚。但如果您能提供帮助,我将不胜感激。
【问题讨论】:
标签: android android-fragments android-recyclerview searchview fragmentstatepageradapter