我有一个tab layout,其中4个instancesfragment相同,但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()

07-24 09:45
查看更多