** 项目的(不是 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();
}
}