在fragment里进行频道管理并和tablayout相关联

先给项目的build.gradle进行适配:

maven {url “https://jitpack.io”}
在这里插入图片描述

对创建的Module中的build.gradle导入依赖:

 implementation 'com.github.andyoom:draggrid:v1.1.4'

先给fragment进行布局:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android
android:layout_width=“match_parent”
android:layout_height=“match_parent”
xmlns:app=“http://schemas.android.com/apk/res-auto”>

**<Button**
    android:id="@+id/to_cm"
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="@id/top"
    app:layout_constraintBottom_toBottomOf="@id/top"
    app:layout_constraintRight_toRightOf="parent"/>

<android.support.**design.widget.TabLayout**
    android:id="@+id/top"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@id/to_cm" />

<android.support**.v4.view.ViewPager**
    android:id="@+id/pager"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@id/top" />

</android.support.constraint.ConstraintLayout>

Fragment:

package com.example.rikao_18.pindao;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.example.rikao_18.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import java.util.List;

import static com.andy.library.ChannelActivity.REQUEST_CODE;
import static com.andy.library.ChannelActivity.RESULT_CODE;
import static com.andy.library.ChannelActivity.RESULT_JSON_KEY;
public class VedioFragment extends Fragment {
//定义变量
private TabLayout tab;
private ViewPager viewpager;
private List datas;
private VedioAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.videofragment,container,false);
//获取资源ID
tab=view.findViewById(R.id.top);
viewpager=view.findViewById(R.id.pager);
//适配器
adapter=new VedioAdapter(getChildFragmentManager());
viewpager.setAdapter(adapter);
//tab和viewpager关联
tab.setupWithViewPager(viewpager);
return view;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    //实例化datas
    datas=new ArrayList <>();
    //添加频道
    datas.add(new ChannelBean("体育", true));
    datas.add(new ChannelBean("关注", true));
    datas.add(new ChannelBean("推荐", true));
    datas.add(new ChannelBean("国际", true));
    datas.add(new ChannelBean("热点", true));
    datas.add(new ChannelBean("军事", true));
    datas.add(new ChannelBean("八卦", true));
    datas.add(new ChannelBean("游戏", false));
    datas.add(new ChannelBean("宠物", false));
    datas.add(new ChannelBean("汽车", false));
    datas.add(new ChannelBean("热卖", false));
    datas.add(new ChannelBean("外卖", false));
    datas.add(new ChannelBean("地图", false));
    datas.add(new ChannelBean("视频", false));
    datas.add(new ChannelBean("图片", false));
    datas.add(new ChannelBean("音乐", false));
    datas.add(new ChannelBean("家居", false));
    datas.add(new ChannelBean("网路", false));
    datas.add(new ChannelBean("购物", false));
    datas.add(new ChannelBean("其他", false));
        //将选出来是true的频道放入到集合中
    adapter.setMjihe(getSelectedResult(datas));
    //按钮的点击事件
    view.findViewById(R.id.to_cm).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Gson gson = new Gson();
            //  将集合转换成gson类型
            String jsonArray = gson.toJson(datas);
            Intent it=new Intent(getActivity(),ChannelActivity.class);
            it.putExtra(RESULT_JSON_KEY,jsonArray);
            startActivityForResult(it,REQUEST_CODE);
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==REQUEST_CODE){
        String json = data.getStringExtra("json");
        datas=new Gson().fromJson(json,new TypeToken<ArrayList<ChannelBean>>(){}.getType());
        adapter.setMjihe(getSelectedResult(datas));
        return;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

//将频道是isSelect的选出来
private List<ChannelBean> getSelectedResult(List<ChannelBean> datas) {
    List<ChannelBean> result=new ArrayList <>();
    for (ChannelBean bean:datas) {
        if (bean.isSelect()){
            result.add(bean);
        }
    }
    return result;
}

}

ViewPager的适配器:

package com.example.rikao_18.pindao;

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.util.ArrayList;
import java.util.List;

public class VedioAdapter extends FragmentPagerAdapter {

private List<ChannelBean> mjihe;

public VedioAdapter(FragmentManager fm) {
    super(fm);
    //实例化集合
    mjihe=new ArrayList <>();
}

//更新
public void setMjihe(List <ChannelBean> mjihe) {
    this.mjihe = mjihe;
    notifyDataSetChanged();
}

@Override
public Fragment getItem(int i) {
		//返回 简单的Fragment
    return new AFragment();
}

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

//和tab关联---返回集合的name到tab
@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return mjihe.get(position).getName();
}

}

适配器中的getItem()返回的fragment:

package com.example.rikao_18.pindao;

import android.annotation.SuppressLint;
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;

@SuppressLint(“ValidFragment”)
public class AFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(“页面”);
return textView;
}
}

*!!!注意:

    若是有image-loader,
    要在清单文件注册name:android:name=".App"
    此时image-loader的App要继承AppApplication
    
## 清单文件 :     

在这里插入图片描述

App继承:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值