TabLayoutとviewpagerバインドの2つの方法

2440 ワード

2つの方法の違いはtabの文字がどこに置かれているかであり、1つはActivityの中で1つは構成中である.最初の1つはActivityです.
// Fragment 
List 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 list;

    public MyAdpater(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);

        this.list=new ArrayList<>();
    }

    public void setData(List 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();
    }

2つ目の方法はアダプタに字を書くことです
// frag 
ArrayList list = new ArrayList<>();
        list.add(new FragA());
        list.add(new FragB());
        ArrayList 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 list;
    private ArrayList list_s;

    public PageAd(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
        this.list=new ArrayList<>();

    }
    public void setData(ArrayList list,ArrayList 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);
    }