fragment+购物车分类

在这里插入图片描述

在这里插入图片描述

//导入依赖
    //Recyclerview是listview的升级版
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    //okhttp
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    //Glide请求网络图片
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.google.code.gson:gson:2.2.4'
//添加权限
<uses-permission android:name="android.permission.INTERNET"/>
//fragment布局文件

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

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:orientation="horizontal"
        >

        <TextView
            android:id="@+id/t1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#000"
            />
        <TextView
            android:id="@+id/t2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            />

        <TextView
            android:id="@+id/t3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            />
    </LinearLayout>

    <RadioGroup
        android:id="@+id/group"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        >
        <RadioButton
            android:id="@+id/btn1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="分类"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            />

        <RadioButton
            android:id="@+id/btn2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="商品列表"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            />
        <RadioButton
            android:id="@+id/btn3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="购物车"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            />
    </RadioGroup>

</LinearLayout>
//分类的布局     fragment_fenfragment
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#44ff44"
    tools:context=".fragment.Fenfragment">

    <!-- TODO: Update blank fragment layout -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_main"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"></android.support.v7.widget.RecyclerView>

        <ScrollView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="8">

            <LinearLayout
                android:id="@+id/ll_next"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"></LinearLayout>
        </ScrollView>
    </LinearLayout>

</FrameLayout>
//分类左侧布局   mainclassify_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/txt_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:layout_margin="10dp"
        android:textSize="20dp" />

</LinearLayout>

//分类右侧布局 nextclassify_item
<?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:gravity="center"
    android:orientation="vertical"
    >
    <ImageView
        android:id="@+id/img_next"
        android:layout_width="60dp"
        android:layout_height="60dp" />

    <TextView
        android:id="@+id/txt_next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

//左侧布局解析类   MainClassifyBean
package com.example.moni1122.bean;

import java.util.List;

/**
 * Created by lenovo on 2018-11-20.
 */

public class MainClassifyBean {

    /**
     * msg :
     * code : 0
     * data : [{"cid":1,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/shop.png","ishome":1,"name":"京东超市"},{"cid":2,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/qqg.png","ishome":1,"name":"全球购"},{"cid":3,"createtime":"2017-10-10T19:45:11","icon":"http://120.27.23.105/images/category/phone.png","ishome":1,"name":"手机数码"},{"cid":5,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/man.png","ishome":1,"name":"男装"},{"cid":6,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girl.png","ishome":1,"name":"女装"},{"cid":7,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/manshoe.png","ishome":1,"name":"男鞋"},{"cid":8,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girlshoe.png","ishome":1,"name":"女鞋"},{"cid":9,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/shirt.png","ishome":1,"name":"内衣配饰"},{"cid":10,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/bag.png","ishome":1,"name":"箱包手袋"},{"cid":11,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/beauty.png","ishome":1,"name":"美妆个护"},{"cid":12,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/jewel.png","ishome":1,"name":"钟表珠宝"},{"cid":13,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/luxury.png","ishome":1,"name":"奢侈品"},{"cid":14,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/computer.png","ishome":1,"name":"电脑办公"},{"cid":15,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"家用电器"},{"cid":16,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"食品生鲜"},{"cid":17,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"酒水饮料"},{"cid":18,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"母婴童装"},{"cid":19,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"玩具乐器"},{"cid":20,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"医药保健"}]
     */

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * cid : 1
         * createtime : 2017-10-10T19:41:39
         * icon : http://120.27.23.105/images/category/shop.png
         * ishome : 1
         * name : 京东超市
         */

        private int cid;
        private String createtime;
        private String icon;
        private int ishome;
        private String name;

        public int getCid() {
            return cid;
        }

        public void setCid(int cid) {
            this.cid = cid;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public int getIshome() {
            return ishome;
        }

        public void setIshome(int ishome) {
            this.ishome = ishome;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}


//分类右侧解析数据  NextClassifyBean
package com.example.moni1122.bean;
import java.util.List;

/**
 * Created by lenovo on 2018-11-20.
 */
public class NextClassifyBean {
    /**
     * msg : 获取子分类成功
     * code : 0
     * data : [{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"月饼","pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货","pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}],"name":"休闲零食","pcid":"1"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜水果","pcid":2,"pscid":9},{"icon":"http://120.27.23.105/images/icon.png","name":"海鲜水产","pcid":2,"pscid":10},{"icon":"http://120.27.23.105/images/icon.png","name":"精选肉类","pcid":2,"pscid":11},{"icon":"http://120.27.23.105/images/icon.png","name":"蛋类","pcid":2,"pscid":12},{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜蔬菜","pcid":2,"pscid":13},{"icon":"http://120.27.23.105/images/icon.png","name":"冷冻食品","pcid":2,"pscid":14},{"icon":"http://120.27.23.105/images/icon.png","name":"饮品甜品","pcid":2,"pscid":15},{"icon":"http://120.27.23.105/images/icon.png","name":"大闸蟹","pcid":2,"pscid":16}],"name":"京东生鲜","pcid":"2"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"大米","pcid":3,"pscid":21},{"icon":"http://120.27.23.105/images/icon.png","name":"面粉","pcid":3,"pscid":22},{"icon":"http://120.27.23.105/images/icon.png","name":"杂粮","pcid":3,"pscid":23},{"icon":"http://120.27.23.105/images/icon.png","name":"食用油","pcid":3,"pscid":24},{"icon":"http://120.27.23.105/images/icon.png","name":"调味品","pcid":3,"pscid":25},{"icon":"http://120.27.23.105/images/icon.png","name":"方便速食","pcid":3,"pscid":26},{"icon":"http://120.27.23.105/images/icon.png","name":"有机食品","pcid":3,"pscid":27}],"name":"粮油调味","pcid":"3"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"饮用水","pcid":4,"pscid":28},{"icon":"http://120.27.23.105/images/icon.png","name":"饮料","pcid":4,"pscid":29},{"icon":"http://120.27.23.105/images/icon.png","name":"牛奶乳品","pcid":4,"pscid":30},{"icon":"http://120.27.23.105/images/icon.png","name":"名茶","pcid":4,"pscid":31},{"icon":"http://120.27.23.105/images/icon.png","name":"蜂蜜","pcid":4,"pscid":32}],"name":"水饮茗茶","pcid":"4"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"白酒","pcid":5,"pscid":33},{"icon":"http://120.27.23.105/images/icon.png","name":"葡萄酒","pcid":5,"pscid":34},{"icon":"http://120.27.23.105/images/icon.png","name":"洋酒","pcid":5,"pscid":35},{"icon":"http://120.27.23.105/images/icon.png","name":"啤酒","pcid":5,"pscid":36},{"icon":"http://120.27.23.105/images/icon.png","name":"黄酒","pcid":5,"pscid":37},{"icon":"http://120.27.23.105/images/icon.png","name":"陈年老酒","pcid":5,"pscid":38}],"name":"中外名酒","pcid":"5"}]
     */

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * cid : 1
         * list : [{"icon":"http://120.27.23.105/images/icon.png","name":"月饼","pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货","pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}]
         * name : 休闲零食
         * pcid : 1
         */

        private String cid;
        private String name;
        private String pcid;
        private List<ListBean> list;

        public String getCid() {
            return cid;
        }

        public void setCid(String cid) {
            this.cid = cid;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getPcid() {
            return pcid;
        }

        public void setPcid(String pcid) {
            this.pcid = pcid;
        }

        public List<ListBean> getList() {
            return list;
        }

        public void setList(List<ListBean> list) {
            this.list = list;
        }

        public static class ListBean {
            /**
             * icon : http://120.27.23.105/images/icon.png
             * name : 月饼
             * pcid : 1
             * pscid : 1
             */

            private String icon;
            private String name;
            private int pcid;
            private int pscid;

            public String getIcon() {
                return icon;
            }

            public void setIcon(String icon) {
                this.icon = icon;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public int getPcid() {
                return pcid;
            }

            public void setPcid(int pcid) {
                this.pcid = pcid;
            }

            public int getPscid() {
                return pscid;
            }

            public void setPscid(int pscid) {
                this.pscid = pscid;
            }
        }
    }
}

//左侧adapter

package com.example.moni1122.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.moni1122.R;
import com.example.moni1122.bean.MainClassifyBean;

import java.util.List;

/**
 * Created by 迁就 on 2018/11/21.
 */

public class MainClassifyAdapter extends RecyclerView.Adapter<MainClassifyAdapter.ViewHolder>{
    private Context context;
    private List<MainClassifyBean.DataBean> list;

    public MainClassifyAdapter(Context context, List<MainClassifyBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    //接口回调
    public interface OnItemClicklistener{
        void onItemClick(View itemView, int position);
    }
    private OnItemClicklistener clicklistener;

    public void getOnItemClicklistener(OnItemClicklistener clicklistener){
        this.clicklistener = clicklistener;
    }


    @NonNull
    @Override
    public MainClassifyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v=  View.inflate(context, R.layout.mainclassify_item,null);
        ViewHolder holder=new ViewHolder(v);
        return holder;
    }


    //绑定数据
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        holder.txtTitle.setText(list.get(position).getName());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clicklistener != null){
                    clicklistener.onItemClick(v,position);
                }
            }
        });

    }
    //返回数量
    @Override
    public int getItemCount() {
        return list.size();
    }

    //初始化对象
    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView txtTitle;
        public ViewHolder(View itemView) {
            super(itemView);
            txtTitle=itemView.findViewById(R.id.txt_title);
        }
    }
}

//右侧adapter

package com.example.moni1122.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.moni1122.R;
import com.example.moni1122.bean.NextClassifyBean;

import java.util.List;

/**
 * Created by 迁就 on 2018/11/21.
 */

public class NextClassifyAdapter extends RecyclerView.Adapter<NextClassifyAdapter.ViewHolder>{
    private Context context;
    private List<NextClassifyBean.DataBean.ListBean> list;


    public NextClassifyAdapter(Context context, List<NextClassifyBean.DataBean.ListBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = View.inflate(context, R.layout.nextclassify_item, null);
        ViewHolder holder=new ViewHolder(v);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        //gilde请求图片
        Glide.with(context).load(list.get(position).getIcon()).into(holder.imgNext);
        holder.txtNext.setText(list.get(position).getName());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }


    //初始化对象
    public class ViewHolder extends RecyclerView.ViewHolder {
        private ImageView imgNext;
        private TextView txtNext;
        public ViewHolder(View itemView) {
            super(itemView);
            imgNext = itemView.findViewById(R.id.img_next);
            txtNext = itemView.findViewById(R.id.txt_next);
        }
    }
}

//model层 创建一个类
package com.example.moni1122.model;

import com.example.moni1122.ICallBack;
import com.example.moni1122.utils.HttpUtils;

import java.lang.reflect.Type;


/**
 * Created by 迁就 on 2018/11/21.
 */
public class Model {


    //写一个方法供他们调用    Icallback是一个接口
    public void getSuccess(String url, ICallBack callBack, Type type){
        HttpUtils.getInstance().get(url,callBack,type);
    }
}
//创建一个ICallBack   接口
package com.example.moni1122;

/**
 * Created by 迁就 on 2018/11/21.
 */


//创建一个Icallback的接口
public interface ICallBack {

    //返回一个成功方法
    void Success(Object o);

    //一个失败方法
    void Failed(Exception e);
}

//创建一个  view 层的接口   ClassifyView
package com.example.moni1122.view;

import com.example.moni1122.bean.MainClassifyBean;
import com.example.moni1122.bean.NextClassifyBean;

import java.util.List;

/**
 * Created by 迁就 on 2018/11/21.
 */

public interface ClassifyView {

    //左侧列表的添加
    void getMainClassify(List<MainClassifyBean.DataBean> list);


    //右侧子类的添加
    void getNextClassify(List<NextClassifyBean.DataBean> list);


    //失败方法
    void getFailed(Exception e);
}

//封装okhttp     
package com.example.moni1122.utils;
import android.os.Handler;
import com.example.moni1122.ICallBack;
import com.google.gson.Gson;
import java.io.IOException;
import java.lang.reflect.Type;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
 * Created by 迁就 on 2018/11/21.
 */


//封装okhttp      HttpUtils
public class HttpUtils {
    private static volatile HttpUtils instance;
    private OkHttpClient client;
    private Handler handler = new Handler();
    private HttpUtils(){
        client = new OkHttpClient();
    }

    public static HttpUtils getInstance(){
        if (instance == null){
            synchronized (HttpUtils.class){
                if (null == instance){
                    instance = new HttpUtils();
                }
            }
        }
        return instance;
    }

    public void get(String url, final ICallBack callBack, final Type type){
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();

        okhttp3.Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(okhttp3.Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.Failed(e);
                    }
                });
            }

            @Override
            public void onResponse(okhttp3.Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                final Object o = gson.fromJson(string, type);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.Success(o);
                    }
                });
            }
        });
    }
}


//创建一个presenter层的类  
package com.example.moni1122.presenter;

import com.example.moni1122.ICallBack;
import com.example.moni1122.bean.MainClassifyBean;
import com.example.moni1122.bean.NextClassifyBean;
import com.example.moni1122.model.Model;
import com.example.moni1122.view.ClassifyView;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

/**
 * Created by 迁就 on 2018/11/21.
 */


public class ClassifyPresenter {
    private ClassifyView cv;
    private Model model;

    public void attach(ClassifyView cv) {
        this.cv = cv;
        model = new Model();
    }
    public void detch() {
        if (cv != null) {
            cv = null;
        }
    }
    public void getMainclassify(){
        Type type = new TypeToken<MainClassifyBean>(){}.getType();
        model.getSuccess("http://www.zhaoapi.cn/product/getCatagory", new ICallBack() {
            @Override
            public void Success(Object o) {
                MainClassifyBean mainClassifyBean = (MainClassifyBean) o;
                if (mainClassifyBean != null){
                    cv.getMainClassify(mainClassifyBean.getData());
                }
            }
            @Override
            public void Failed(Exception e) {
                cv.getFailed(e);
            }
        },type);
    }

    public void getNextClassify(String url){
        Type type = new TypeToken<NextClassifyBean>(){}.getType();
        model.getSuccess(url, new ICallBack() {
            @Override
            public void Success(Object o) {
                NextClassifyBean nextClassifyBean = (NextClassifyBean) o;
                if (nextClassifyBean != null){
                    cv.getNextClassify(nextClassifyBean.getData());
                }
            }
            @Override
            public void Failed(Exception e) {
                cv.getFailed(e);
            }
        },type);
    }

}


//分类 的 fragment   
package com.example.moni1122.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.moni1122.R;
import com.example.moni1122.adapter.MainClassifyAdapter;
import com.example.moni1122.adapter.NextClassifyAdapter;
import com.example.moni1122.bean.MainClassifyBean;
import com.example.moni1122.bean.NextClassifyBean;
import com.example.moni1122.presenter.ClassifyPresenter;
import com.example.moni1122.view.ClassifyView;

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

/**
 * date:2018/11/22
 * author:霍钲杰(叮咯呤咚呛)
 * function:
 */
public class Fenfragment extends Fragment implements ClassifyView{
    private RecyclerView rvMain;
    private LinearLayout llNext;
    private MainClassifyAdapter mainClassifyAdapter;
    private NextClassifyAdapter nextClassifyAdapter;
    private List<MainClassifyBean.DataBean> mainList;
    private ClassifyPresenter presenter;
    private List<NextClassifyBean.DataBean> nextList;

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

        rvMain = view.findViewById(R.id.rv_main);
        llNext = view.findViewById(R.id.ll_next);
        mainList = new ArrayList<>();
        nextList = new ArrayList<>();
        mainClassifyAdapter = new MainClassifyAdapter(getActivity(),mainList);
        RecyclerView.LayoutManager manager = new LinearLayoutManager(getActivity());
        rvMain.setLayoutManager(manager);
        rvMain.setAdapter(mainClassifyAdapter);
        presenter = new ClassifyPresenter();
        presenter.attach(this);
        presenter.getMainclassify();
        initData();
        return view;
    }

    private void initData() {
        mainClassifyAdapter.getOnItemClicklistener(new MainClassifyAdapter.OnItemClicklistener() {
            @Override
            public void onItemClick(View itemView, int position) {
                MainClassifyBean.DataBean dataBean = mainList.get(position);
                presenter.getNextClassify("http://www.zhaoapi.cn/product/getProductCatagory?cid="+dataBean.getCid());
            }
        });
    }

    public void getMainClassify(List<MainClassifyBean.DataBean> list) {
        if (list != null){
            mainList.clear();
            mainList.addAll(list);
            mainClassifyAdapter.notifyDataSetChanged();
        }
    }

    public void getFailed(Exception e) {
        Toast.makeText(getActivity(),"网络连接错误",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onResume() {
        super.onResume();
        presenter.getNextClassify("http://www.zhaoapi.cn/product/getProductCatagory?cid=1");
    }


    //防止内存泄漏
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (presenter != null){
            presenter.detch();
        }
    }

    public void getNextClassify(List<NextClassifyBean.DataBean> list) {
        if (list != null){
            llNext.removeAllViews();
            for (int i = 0; i <list.size() ; i++) {
                TextView textView = new TextView(getActivity());
                textView.setText(list.get(i).getName());
                RecyclerView recyclerView = new RecyclerView(getActivity());
                RecyclerView.LayoutManager manager = new GridLayoutManager(getActivity(),3);
                recyclerView.setLayoutManager(manager);
                nextClassifyAdapter = new NextClassifyAdapter(getActivity(),list.get(i).getList());
                recyclerView.setAdapter(nextClassifyAdapter);
                nextList.clear();
                nextList.addAll(list);
                nextClassifyAdapter.notifyDataSetChanged();
                llNext.addView(textView);
                llNext.addView(recyclerView);
            }
        }
    }

}

//Mainactivity

package com.example.moni1122;

import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import com.example.moni1122.fragment.Fenfragment;
import com.example.moni1122.fragment.Goufragment;
import com.example.moni1122.fragment.Shangfragment;

public class MainActivity extends AppCompatActivity {

    private ViewPager viewpager;
    private TextView t1;
    private TextView t2;
    private TextView t3;
    private RadioButton btn1;
    private RadioButton btn2;
    private RadioButton btn3;
    private RadioGroup group;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        t1 = (TextView) findViewById(R.id.t1);
        t2 = (TextView) findViewById(R.id.t2);
        t3 = (TextView) findViewById(R.id.t3);
        btn1 = (RadioButton) findViewById(R.id.btn1);
        btn2 = (RadioButton) findViewById(R.id.btn2);
        btn3 = (RadioButton) findViewById(R.id.btn3);
        group = (RadioGroup) findViewById(R.id.group);

        viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int i) {
                switch (i){
                    case 0:
                       Fenfragment fenfragment = new Fenfragment();
                        return  fenfragment;
                    case 1:
                        Shangfragment shangfragment = new Shangfragment();
                        return  shangfragment;
                    case 2:
                        Goufragment goufragment = new Goufragment();
                        return goufragment;
                }
                return null;
            }

            @Override
            public int getCount() {
                return 3;
            }
        });

        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.btn1:
                        viewpager.setCurrentItem(0);
                        break;
                    case R.id.btn2:
                        viewpager.setCurrentItem(1);
                        break;
                    case R.id.btn3:
                        viewpager.setCurrentItem(2);
                        break;
                }
            }
        });

        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {

                switch (i){
                    case 0:
                        group.check(R.id.btn1);
                        t1.setBackgroundColor(Color.BLACK);
                        t2.setBackgroundColor(Color.WHITE);
                        t3.setBackgroundColor(Color.WHITE);
                        break;
                    case 1:
                        group.check(R.id.btn2);
                        t1.setBackgroundColor(Color.WHITE);
                        t2.setBackgroundColor(Color.BLACK);
                        t3.setBackgroundColor(Color.WHITE);
                        break;
                    case 2:
                        group.check(R.id.btn3);
                        t1.setBackgroundColor(Color.WHITE);
                        t2.setBackgroundColor(Color.WHITE);
                        t3.setBackgroundColor(Color.BLACK);
                        break;
                }
            }
            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/NorthHar/article/details/84338564