我在活动中有一个活动,我具有两个选项卡(选项卡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
});
答案 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");