几行代码实现动态修改Tablayout标题
作者:互联网
背景
很多时候,我们需要在tablayout的标题显示fragment有多少条数据,加个角标数量
也有一些其他情况需要请求到数据再动态修改tab的标题。
如果在activity请求的可以直接请求到设置上去,但是必须请求到数据再去初始化tablayout+viewpager这些,用户体验真心会很差。
如果在fragment中请求角标数据,可以activity和fragment通信后,设置。
show the code:
adapter
public class AdapterTopPager extends FragmentStatePagerAdapter {
private List<String> titles;
private List<Fragment> fragmentLists;
public AdapterTopPager11(FragmentManager fm, List<Fragment> fragmentLists, List<String> titles){
super(fm);
this.fragmentLists = fragmentLists;
this.titles=titles;
}
@Override
public CharSequence getPageTitle(int position) {
if (titles != null && position <= titles.size()) {
return titles.get(position);
}
return super.getPageTitle(position);
}
@Override
public Fragment getItem(int position) {
return fragmentLists.get(position);
}
@Override
public int getCount() {
return fragmentLists.size();
}
// 动态设置我们标题的方法
public void setPageTitle(int position, String title) {
if (position >= 0 && position < titles.size()) {
titles.set(position, title);
notifyDataSetChanged();
}
}
}
其实相比于之前的adapter,新的adapter就加了个setPageTitle 方法,设置并且刷新。
activity调用
class ActivityMyGift : BaseActivity() {
private val fragmentList = ArrayList<Fragment>()
lateinit var mAdapterTopPager:AdapterTopPager11
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my_gift)
initView()
}
fun initView() {
fragmentList.add(Fragment1.newInstance( ))
fragmentList.add(Fragment2.newInstance( ))
val titles= mutableListOf("收到鲜花","收到鸡蛋") //设置一个默认的标题集合,后面获取到再设置
mAdapterTopPager = AdapterTopPager11(supportFragmentManager, fragmentList, titles)
viewpager.run {
setPageTransformer(true, AccordionTransformer())
adapter = mAdapterTopPager// 设置ViewPager的适配器
currentItem = postion
}
tablayout.setupWithViewPager(viewpager)
getUserInfo(userid)
}
private fun getUserInfo(user_id: Int) {
//网络请求省略
mAdapterTopPager.setPageTitle(0,"收到鲜花("+userInfo.user_flower+")")
mAdapterTopPager.setPageTitle(1,"收到鸡蛋("+userInfo.user_egg+")")
}
}
就这样,很简单的实现了设置刷新。
标签:fragmentList,fragmentLists,adapter,几行,标题,titles,activity,mAdapterTopPager,Tablay 来源: https://blog.csdn.net/qq_37237245/article/details/100597371