我有一个tab layout
,其中4个instances
的fragment
相同,但list
中的数据不同。我想获取current page
,以便可以使用标题更改data
。问题在于:并非总是调用:mViewPager.getCurrentItem())
method
。
在oncreateview
中,我有:
jours2 = new ArrayList<>();
rv = (RecyclerView) rootView.findViewById(R.id.recyclerView);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
adapter = new MyAdapter(jours2);
rv.setAdapter(adapter);
String test= mSectionsPagerAdapter.getPageTitle(mViewPager.getCurrentItem()).toString();
for (Cours c : jours)
{
if (c.jour==test)
{
jours2.add(c);
}
}
adapter.notifyDataSetChanged();
因此,我可以更改我的代码,以便始终获得
current
项目title
。SectionPageAdapter:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = new ArrayList<>();
ArrayList<String> titles = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
public void AddFragment(Fragment fragment,String title)
{
fragments.add(fragment);
titles.add(title);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return fragments.get(position);
}
@Override
public int getCount() {
// Show 3 total pages.
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
最佳答案
您可以使用它来获取职位
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tab.getPosition();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
或者您可以简单地使用
tabLayout.getSelectedTabPosition()
。