频道管理

本文详细介绍了如何在Android应用中实现Fragment与ViewPager的联动效果,包括初始化组件、加载Fragment列表、设置适配器以及实现TabLayout与ViewPager的联动。同时,还展示了如何通过点击事件跳转到新的Activity并处理回传数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值