public class FragmentOne extends Fragment {
private ArrayList<Fragment> fragmentList;
private TabLayout tableLayout;
private ViewPager pager;
//用户栏目列表
private ArrayList<ChannelItem> userChannelList = new ArrayList<ChannelItem>();
private TabPagerAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragone, container, false);
tableLayout = view.findViewById(R.id.tablayout);
pager = view.findViewById(R.id.viewpager);
//初始化
//查询数据库
userChannelList = DBUtil.getTabData(getActivity());
//加载Fragment
fragmentList = new ArrayList<>();
for (int i = 0; i < userChannelList.size(); i++) {
fragmentList.add(new Frag1());
}
//设置适配器
adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), fragmentList, userChannelList);
pager.setAdapter(adapter);
//绑定
tableLayout.setupWithViewPager(pager);//此方法就是让tablayout和ViewPager联动
//1.点击跳转频道管理
view.findViewById(R.id.tabMenu).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//2跳转Activity
Intent intent = new Intent(getActivity(), ChannelActivity.class);
//3跳转回传
startActivityForResult(intent, 0);
}
});
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//4判断是不是我们的回传 回传值是0
if (resultCode == 0) {
userChannelList = DBUtil.getTabData(getActivity());
//8便利数据
for (int i = 0; i < userChannelList.size(); i++) {
ChannelItem channelBean = (ChannelItem) userChannelList.get(i);
String tabName = channelBean.getName();
//9把数据添加到tab中
tableLayout.addTab(tableLayout.newTab().setText(tabName));
//设置fragment(可以根据名字创建Fragment)
// if ("北京".equals(tabName)) {
fragmentList.add(new Frag1());
// } else {
//// .,....
// }
}
//设置适配器
adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), fragmentList, userChannelList);
pager.setAdapter(adapter);
//绑定
tableLayout.setupWithViewPager(pager);//此方法就是让tablayout和ViewPager联动
}
}
}
public class TabPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
private ArrayList<ChannelItem> list_Title;
public TabPagerAdapter(FragmentManager fm , List<Fragment> fragmentList, ArrayList<ChannelItem> list_Title) {
super(fm);
this.fragmentList = fragmentList;
this.list_Title = list_Title;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return list_Title.size();
}
@Override
public CharSequence getPageTitle(int position) {
return list_Title.get(position).getName();
}
}