TabLayout和viewpager繫結的兩種方式
阿新 • • 發佈:2018-11-14
兩種方法的區別是tab的文字放在哪裡,一種是在Activity中一種是在是配置中;
先第一種在Activity中:
//把需要用的Fragment放到一個集合中 List<Fragment> list=new ArrayList<>(); list.add(new Frag1()); list.add(new Frag2()); //介面卡 MyAdpater adpater = new MyAdpater(getSupportFragmentManager()); adpater.setData(list); page.setAdapter(adpater); //一個樣式 tab.setTabMode(TabLayout.MODE_FIXED); //TabLayout與viewpager聯動的程式碼 tab.setupWithViewPager(page); //需要幾個頁面new幾個 tab.addTab(tab.newTab()); tab.addTab(tab.newTab()); //把需要的文字寫在裡面,也是要先開啟 tab.getTabAt(0).setText("1"); tab.getTabAt(1).setText("2");
介面卡
private List<Fragment> list; public MyAdpater(FragmentManager supportFragmentManager) { super(supportFragmentManager); this.list=new ArrayList<>(); } public void setData(List<Fragment> list) { //這裡一定要用this.否則會報空指標 this.list.clear(); this.list.addAll(list); notifyDataSetChanged(); } @Override public Fragment getItem(int i) { return list.get(i); } @Override public int getCount() { return list.size(); }
第二種方法是在介面卡中寫字
//把frag和需要的文字放進集合 ArrayList<Fragment> list = new ArrayList<>(); list.add(new FragA()); list.add(new FragB()); ArrayList<String> list_s = new ArrayList<>(); list_s.add("熱門"); list_s.add("熱門"); PageAd ad = new PageAd(getSupportFragmentManager()); //把兩個集合都放進介面卡 ad.setData(list,list_s); tab.setTabMode(TabLayout.MODE_FIXED); page.setAdapter(ad); tab.setupWithViewPager(page); tab.addTab(tab.newTab()); tab.addTab(tab.newTab());
以下是介面卡
private ArrayList<Fragment> list;
private ArrayList<String> list_s;
public PageAd(FragmentManager supportFragmentManager) {
super(supportFragmentManager);
this.list=new ArrayList<>();
}
public void setData(ArrayList<Fragment> list,ArrayList<String> list_s) {
this.list=list;
this.list_s=list_s;
}
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
//注意要把這個方法打出來把集合裡的字給到
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return list_s.get(position);
}