TabLayoutとviewpagerバインドの2つの方法
2440 ワード
2つの方法の違いはtabの文字がどこに置かれているかであり、1つはActivityの中で1つは構成中である.最初の1つはActivityです.
アダプタ
2つ目の方法はアダプタに字を書くことです
以下はアダプタです
// 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);
}