Android fragments 访问ViewPager中的ListView适配器
我拥有的 1) 我有一个活动,里面有一个ActionBar和一个片段。 2) 在这个片段中,我有一个显示3-4个片段的ViewPager。 3) 在每个片段中,都有一个不同的ListView 我想要什么 我想在ActionBar中实现ListView过滤器。这不是问题,但我无法访问ViewPager中不同列表的各个适配器,它位于片段中Android fragments 访问ViewPager中的ListView适配器,android-fragments,android-listview,android-viewpager,android-adapter,searchview,Android Fragments,Android Listview,Android Viewpager,Android Adapter,Searchview,我拥有的 1) 我有一个活动,里面有一个ActionBar和一个片段。 2) 在这个片段中,我有一个显示3-4个片段的ViewPager。 3) 在每个片段中,都有一个不同的ListView 我想要什么 我想在ActionBar中实现ListView过滤器。这不是问题,但我无法访问ViewPager中不同列表的各个适配器,它位于片段中 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the men
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_file_hide_main, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
Fragment filesMain = getSupportFragmentManager().findFragmentByTag("FILES_MAIN");
ViewPager viewPager = (ViewPager) filesMain.getView().findViewById(R.id.filesViewPager);
if(viewPager.getAdapter() == null)
Log.d("TAG", ADAPTER IS NULL");
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// this is your adapter that will be filtered
//adapter.getFilter().filter(newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// this is your adapter that will be filtered
//adapter.getFilter().filter(query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
return true;
}
适配器始终为空,并且在用户滑动时,我也无法获取所有ListView的适配器
请帮助提供解决方案。定义接口:
public interface ViewPagerPageChangeListener{
public void updateFragmentPosition(int position);
}
主要活动:
public class MyActivity extends FragmentActivity implements ViewPagerPageChangeListener(){
@Override
public void updateFragmentPosition(int position){
switch(position){
case 0 :
FragmentOne fragmentOne = (FragmentOne) mainFragment.getActiveFragment(currentPosition);
break;
case 1 :
FragmentTwo = fragmentTwo = (FragmentTwo) mainFragment.getActiveFragment(currentPosition);
break;
}
}
}
在包含ViewPager的片段中:
ViewPagerPageChangeListener listener = (ViewPagerPageChangeListener)getActivity();
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int pos) {
currentPosition = pos;
listener.updateFragmentPosition(pos);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
public Fragment getActiveFragment(){
return fragmentPagerAdapter.getItem(position);
}
现在,FragmentOne、FragmentTwo等是视图寻呼机中的片段。在这些片段中定义一个方法,该方法将更新其各自列表中的值
现在,只要当前项目在视图寻呼机中发生更改,您的主要活动就会收到通知。然后,您可以从viewpager中获取片段,更新当前可见的片段,并将其转换为相关的片段类
现在,当您进行搜索时,只需调用
fragmentOne.updateList(String filterText);或者fragmentTwo.updateList(字符串过滤器文本)代码>初始设置时,是否有对“查看寻呼机适配器”的引用?查看寻呼机位于片段中,但OnCreateOptions菜单位于“活动”中。