一.创建视图
<?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/tab2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00ffffff"
android:textColor="#0f0"
android:textSize="66dp"
android:text="+" />
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
二.导入依赖和权限
maven {url "https://jitpack.io"}
implementation 'com.github.andyoom:draggrid:v1.0.1'
三.核心代码
package com.bawie.yuekao.frag;
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.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.bawie.yuekao.R;
import com.bawie.yuekao.activity.ShouActivity;
import com.bawie.yuekao.base.BaseFragment;
import com.bawie.yuekao.base.BaseFragment;
import com.bawie.yuekao.fragment.BlankFragment;
import com.bawie.yuekao.fragment.FragmentFive;
import com.bawie.yuekao.fragment.FragmentFour;
import com.bawie.yuekao.fragment.FragmentSix;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
public class FragTwo extends BaseFragment {
private TabLayout tab2;
private Button btt2;
private ViewPager vp2;
private ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>();
private ArrayList<ChannelBean> channelBeanArrayList = new ArrayList<ChannelBean>();
private MPagerAdapter mPagerAdapter;
@Override
protected void initView(View view) {
tab2 = view.findViewById(R.id.tab2);
btt2 = view.findViewById(R.id.btt2);
vp2 = view.findViewById(R.id.vp2);
}
@Override
protected void initData() {
btt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeanArrayList);
}
});
channelBeanArrayList.add(new ChannelBean("热点", true));
channelBeanArrayList.add(new ChannelBean("北京", true));
channelBeanArrayList.add(new ChannelBean("房价", true));
channelBeanArrayList.add(new ChannelBean("旅游", false));
channelBeanArrayList.add(new ChannelBean("条目1", false));
channelBeanArrayList.add(new ChannelBean("条目2", false));
for (int i = 0; i < channelBeanArrayList.size(); i++) {
if (channelBeanArrayList.get(i).isSelect()) {
//tb:是findViewById找到的tab;
String name = channelBeanArrayList.get(i).getName();
tab2.addTab(tab2.newTab().setText(name));
if (i == 0) {
fragmentArrayList.add(new FragmentFour());
}else if (i == 1){
fragmentArrayList.add(new FragmentFive());
}else if(i == 2){
fragmentArrayList.add(new FragmentSix());
}else{
fragmentArrayList.add(new BlankFragment());
}
}
}
mPagerAdapter = new MPagerAdapter(getChildFragmentManager());
vp2.setAdapter(mPagerAdapter);
tab2.setupWithViewPager(vp2);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String stringExtra = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<ChannelBean>>(){}.getType(); // 把json直接转换成集合;
channelBeanArrayList = gson.fromJson(stringExtra, type); // 吧json转换成集合
tab2.removeAllTabs(); //清空 tab
fragmentArrayList.clear(); //清空 所有Fragment
// 重新生成新的tab, 重新生成新的Fragment;
for (int i = 0; i < channelBeanArrayList.size(); i++) {
ChannelBean channelBean = channelBeanArrayList.get(i);
if (channelBean.isSelect()) {
//tb:是findViewById找到的tab;
tab2.addTab(tab2.newTab().setText(channelBean.getName()));
if ("热点".equals(channelBean.getName())) {
fragmentArrayList.add(new FragmentFour());
}else if ("北京".equals(channelBean.getName())){
fragmentArrayList.add(new FragmentFive());
}else if("房价".equals(channelBean.getName())){
fragmentArrayList.add(new FragmentSix());
}else{
fragmentArrayList.add(new BlankFragment());
}
}
}
mPagerAdapter.notifyDataSetChanged();
}
private class MPagerAdapter extends FragmentPagerAdapter {
public MPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragmentArrayList.get(i);
}
@Override
public int getCount() {
return fragmentArrayList.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return channelBeanArrayList.get(position).getName();
}
}
@Override
protected int getLayoutId() {
return R.layout.frag2;
}
}
四.写BlankFragment
package com.bawie.yuekao.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bawie.yuekao.base.BaseFragment;
public class BlankFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
Bundle bundle = getArguments();
//String name = bundle.getString("name");
double random = Math.random();
textView.setText("xxxxxxxxxxx"+random);
return textView;
}
//静态创建自己实例的方法, 并且传递值过来,返回自己;
public static BlankFragment getInstances(String name) {
BlankFragment blankFragment = new BlankFragment();
Bundle bundle = new Bundle();
bundle.putString("name", name);
blankFragment.setArguments(bundle);
return blankFragment;
}
}
五.通过Activity进行传值
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment2 = getSupportFragmentManager().findFragmentByTag("fragment2");
fragment2.onActivityResult(requestCode,resultCode,data);
}