频道管理 第三方插件

** 项目的(不是 module) build.grade
在 allprojects–repositories 里 加上
maven {url “https://jitpack.io”} **

本module继承依赖
implementation 'com.github.andyoom:draggrid:v1.0.1’

在Activity 里

package com.example.test01;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.example.test01.Adapter.PinDao_FA;
import com.example.test01.Fragment.BaseFragment.BlankFragment;
import com.example.test01.Fragment.BaseFragment.VP_Fragment1;
import com.example.test01.Fragment.BaseFragment.VP_Fragment2;
import com.example.test01.Fragment.BaseFragment.VP_Fragment3;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.Serializable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class PinDaoActivity extends AppCompatActivity {

    private List<ChannelBean> channelBeanList = new ArrayList<>();
    private List<Fragment> fragmentList = new ArrayList<>();
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private PinDao_FA adapter;

    @SuppressLint("WrongViewCast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pindao);
        //
        tabLayout = findViewById(R.id.pindao_tab);
        viewPager = findViewById(R.id.pindao_pager);
        //
        Button btn = findViewById(R.id.pindao_jia);
        //
        initData();
        //
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChannelActivity.startChannelActivity(PinDaoActivity.this,channelBeanList);
            }
        });
        //
        //添加Fragment
        for (int i = 0; i < channelBeanList.size(); i++) {
            //如果被选中 就会新建Fragment 并且 给tab 添加标签
            if(channelBeanList.get(i).isSelect()){
                String name = channelBeanList.get(i).getName();
                tabLayout.addTab(tabLayout.newTab().setText(name));
                if (i == 0) {
                    fragmentList.add(new VP_Fragment1());
                }else if(i == 1){
                    fragmentList.add(new VP_Fragment2());
                }else if(i == 2){
                    fragmentList.add(new VP_Fragment3());
                }else {
                    //fragmentList.add(new BlankFragment());
                }
            }
        }
        ////
        adapter = new PinDao_FA(getSupportFragmentManager(), fragmentList, channelBeanList);
        viewPager.setAdapter(adapter);

        tabLayout.setupWithViewPager(viewPager);
    }

    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("条目1",false));
        channelBeanList.add(new ChannelBean("条目2",false));
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //01
        String json = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
        //02
        Type type = new TypeToken<ArrayList<ChannelBean>>(){}.getType();
        //03
        channelBeanList = new Gson().fromJson(json, type);
        //04
        tabLayout.removeAllTabs();
        fragmentList.clear();
        //05循环
        for (int i = 0; i < channelBeanList.size(); i++) {
            //06拿出一个bean
            ChannelBean channelBean = channelBeanList.get(i);
            //07判断 选中
            if (channelBean.isSelect()) {
                //08拿出个名字
                String tabName = channelBeanList.get(i).getName();
                //给tab标签赋值
                tabLayout.addTab(tabLayout.newTab().setText(tabName));
                //如果是热点就实例一个Fragment
                if ("热点".equals(channelBean.getName())) {
                    fragmentList.add(new VP_Fragment1());
                }else if("北京".equals(channelBean.getName())){
                    fragmentList.add(new VP_Fragment2());
                }else if("房价".equals(channelBean.getName())){
                    fragmentList.add(new VP_Fragment3());
                }else {
                    fragmentList.add(new BlankFragment());
                }
            }

        }
        //因为集合中的Fragment数量改变了;
        adapter.notifyDataSetChanged();
    }
}

适配器

package com.example.test01.Adapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.andy.library.ChannelBean;

import java.nio.channels.Channel;
import java.util.List;

public class PinDao_FA extends FragmentPagerAdapter {

    private List<Fragment> fragmentList;
    private List<ChannelBean> channelBeanList;

    public PinDao_FA(FragmentManager fm, List<Fragment> fragmentList, List<ChannelBean> channelBeanList) {
        super(fm);
        this.fragmentList = fragmentList;
        this.channelBeanList = channelBeanList;
    }

    @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();
    }
}

这是初始页面

这是完成的

猜你喜欢

转载自blog.csdn.net/qq_41972756/article/details/84328779