频道管理(ViewPager页面中)

我们先来看一下效果图

我写了三个页面(首页 推荐 我的)
我要在推荐的页面写一个频道管理 其实和之前的写法几乎是一样的
频道管理(ViewPager页面中)

1.在推荐的页面进行布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <android.support.design.widget.TabLayout
            android:id="@+id/tablayout"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

        </android.support.design.widget.TabLayout>

        <Button
            android:id="@+id/btn_jia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"/>
    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>
   
</LinearLayout>

2.在.java中编写代码
注意:在initView()方法的点击+号传值中getActivity() 要转换成 AppCompatActivity类型

ChannelActivity.startChannelActivity( (AppCompatActivity) getActivity(),channelBeanlist);

public class Fragment2 extends Fragment {

	private View view;
    private ViewPager pager1;
    private TabLayout tablayout;
    private Button btn_jia;
    ArrayList<Fragment> fragmentlist = new ArrayList<>();
    ArrayList<ChannelBean> channelBeanlist = new ArrayList<>();
    private TabAdapter tabAdapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate( R.layout.fragment2, container, false );

        //调用方法
        initView();
        initData();
        return view;
    }

    //方法initView
    private void initView(){
        pager1 = (ViewPager)view.findViewById( R.id.pager1 );
        tablayout = (TabLayout)view.findViewById( R.id.tablayout );
        btn_jia = (Button)view.findViewById( R.id.btn_jia );
        //给pager1设置适配器
        tabAdapter = new TabAdapter( getChildFragmentManager() );
        pager1.setAdapter( tabAdapter );
        //把tablayout和pager关联起来
        tablayout.setupWithViewPager( pager1 );
        //当我点击+号的时候
        btn_jia.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转
                ChannelActivity.startChannelActivity( (AppCompatActivity) getActivity(),channelBeanlist);
            }
        } );//当我点击+号的时候
    }


    private void initData(){
        //设置标题
        channelBeanlist.add( new ChannelBean( "热点",true ) );
        channelBeanlist.add( new ChannelBean( "北京",true ) );
        channelBeanlist.add( new ChannelBean( "邯郸",true ) );
        channelBeanlist.add( new ChannelBean( "河南",false ) );
        channelBeanlist.add( new ChannelBean( "天津",false ) );
        channelBeanlist.add( new ChannelBean( "山西",false ) );

        //循环
        for (int i = 0; i < channelBeanlist.size(); i++) {
            if (channelBeanlist.get( i ).isSelect()) {//如果为选中
                //就显示到tablayout上
                tablayout.addTab( tablayout.newTab().setText( channelBeanlist.get( i ).getName() ) );
                if (i == 0) {
                    fragmentlist.add( new Fragment4() );
                }else if(i==1){
                    fragmentlist.add( new Fragment5() );
                }else{
                    fragmentlist.add( new Fragment6());
                }
            }
        }
        //刷新适配器
        tabAdapter.notifyDataSetChanged();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        String jsonString = data.getStringExtra( ChannelActivity.RESULT_JSON_KEY );
        //开始解析
        Gson gson = new Gson();
        //把数组转变成为集合
        Type type = new TypeToken<ArrayList<ChannelBean>>() {}.getType();
        channelBeanlist= gson.fromJson( jsonString, type );
        tablayout.removeAllTabs();
        fragmentlist.clear();
        //重新添加tab和fragment
        for (int i = 0; i < channelBeanlist.size(); i++) {
            if (channelBeanlist.get( i ).isSelect()) {//如果为选中
                //就显示到tablayout上
                tablayout.addTab( tablayout.newTab().setText( channelBeanlist.get( i ).getName() ) );
                if (i == 0) {
                    fragmentlist.add( new Fragment4() );
                }else if(i==1){
                    fragmentlist.add( new Fragment5() );
                }else{
                    fragmentlist.add( new Fragment6());
                }
            }
        }
        //刷新适配器
        tabAdapter.notifyDataSetChanged();
    }

    //适配器
    private class TabAdapter extends FragmentPagerAdapter {

        public TabAdapter(FragmentManager fm) {
            super( fm );
        }

        @Override
        public Fragment getItem(int i) {
            return fragmentlist.get( i );
        }

        @Override
        public int getCount() {
            return fragmentlist.size();
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return channelBeanlist.get( position ).getName();
        }
    }//适配器

}

3.转发
在MainActivity.java中编写代码

transaction.add( R.id.pager, fragment2 ,“Fragment2”);

	//开启事物
        FragmentTransaction transaction = manager.beginTransaction();
        //添加事物
        fragment1 = new Fragment1();
        fragment2 = new Fragment2();
        fragment3 = new Fragment3();
        transaction.add( R.id.pager, fragment1 );
        transaction.add( R.id.pager, fragment2 ,"Fragment2");
        transaction.add( R.id.pager, fragment3 );

接着在oncreat()下面写

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult( requestCode, resultCode, data );
        Fragment fragment21 = manager.findFragmentByTag( "Fragment2" );
        fragment21.onActivityResult( requestCode,resultCode,data );
    }