如何从适配器更新选项卡标题?

时间:2018-07-06 12:07:42

标签: android android-recyclerview android-tablayout

我在活动中有一个活动,我具有两个选项卡(选项卡1,选项卡2)的选项卡布局。每个选项卡都有recyclerview以及使用Recycleradapter的项目列表。我想在用户单击回收者子项目时更改选项卡标题。

仅供参考:-我在适配器内有一个子级的Clicklistener。

活动代码

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFragment(new Tab1Fragment(), "Tab1");

        adapter.addFragment(new Tab2Fragment(), "Tab2");

    viewPager.setAdapter(adapter);
}

适配器代码

holder.parentlayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //I want to change the tab text here
    });

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码从TabLayout中获取Tab对象,然后在其中应用更新后的文本:

mTabLayout.getTabAt(index).setText()

答案 1 :(得分:0)

尝试这种方法,将一种标题更新方法添加到viewPagerAdapter中,如下所示。

public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> mFragmentList = new ArrayList<>();
private List<String> mFragmentTitleList = new ArrayList<>();

public ViewPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    return mFragmentList.get(position);

}

public void setTitle(String title)
{
    mFragmentTitleList.add(title);
}
@Override
public int getCount() {
    return mFragmentList.size();
}

public void addFragment(Fragment fragment, String title) {
    mFragmentList.add(fragment);
    mFragmentTitleList.add(title);
}

@Override
public CharSequence getPageTitle(int position) {
    return mFragmentTitleList.get(position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    mFragmentList = null;
    mFragmentTitleList = null;
    container.removeAllViews();
    super.destroyItem(container, position, object);
}

public  void updateTitle(String title,int position){
    mFragmentTitleList.set(position,title);
    notifyDataSetChanged();
}

@Override
public Parcelable saveState() {
    return null;
}
}

然后,当您更新标题时,请调用以下方法。

       mViewPagerAdapter.updateTitle("Your update title");