Android 频道管理实现原理

这篇文章主要介绍一下Android的频道管理 频道管理非常的常见 像一下新闻类的APP大部分都有用到频道管理,今天写了个简单的demo介绍一下频道管理的实用.
1.首先肯定是依赖
一个是Project的依赖:在allprojects加maven {url “https://jitpack.io”}
Android 频道管理实现原理_第1张图片
一个是当前Module的依赖
在这里插入图片描述
2.布局用tablayout+Vp实现
Android 频道管理实现原理_第2张图片
3.设置两个集合 用来存放fragment和title 与tablayout有区别的是
频道管理存放title的集合泛型是ChannelBean而tablayout的泛型是String类型

在这里插入图片描述
4.MainActivity的onCreate()方法里写两个方法 有利于实现效果 整理代码也会很规范
Android 频道管理实现原理_第3张图片
5.initVeiw()方法 里面实现 设置适配器.VP和Tablayout关联.还有button的点击事件

private void initVeiw() {
        //找控件
        pager = findViewById(R.id.pager1);
        tabLayout = findViewById(R.id.tabl);
        button = findViewById(R.id.butn2);

        //设置适配器
        adapter1 = new tabAdapter(getSupportFragmentManager());

        pager.setAdapter(adapter1);

        //关联
        tabLayout.setupWithViewPager(pager);

        //点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChannelActivity.startChannelActivity(TwoActivity.this,channelBeanList);
            }
        });
    }

6.initData()方法里实现把title和fragment添加到集合 然后刷新适配器

private void initData() {
        channelBeanList.add(new ChannelBean("热点",true));//true为显示当前title
        channelBeanList.add(new ChannelBean("北京",true));
        channelBeanList.add(new ChannelBean("房价",true));
        channelBeanList.add(new ChannelBean("旅游",false));//false为不显示当前title
        channelBeanList.add(new ChannelBean("条目1",false));
        channelBeanList.add(new ChannelBean("条目2",false));
        for (int i = 0; i 

7.实现onActivityResult方法 方法里实现获取传过来的数据 把tabLayout和fragmentList清空
根据传过来的值重新添加tablayout 和fragment的数据

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //返回来的频道管理 封装在json中
        String jsonString = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);

        //解析
        Gson gson = new Gson();

        //把数组转为集合  用TypeToken转换
        Type type = new TypeToken>() {}.getType();

        channelBeanList = gson.fromJson(jsonString, type);

        //清空tablayout
        tabLayout.removeAllTabs();
        //清空fragment
        fragmentList.clear();

        //重新添加tablayout 和fragment
        for (int i = 0; i 

8.最后说一下适配器 继承一下FragmentPagerAdapter
在这里插入图片描述

与tablayout有区别的是
tablayou返回的是下标
频道管理返回的是下标对应的title

在这里插入图片描述
世上无难事,只怕有心人 世上无难事,只怕有心人 世上无难事,只怕有心人

你可能感兴趣的:(Android 频道管理实现原理)