分类

<1布局文件>

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


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyone"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        >
    </android.support.v7.widget.RecyclerView>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recytwo"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1">
    </android.support.v7.widget.RecyclerView>


</LinearLayout>

**item1**
<?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="wrap_content"
    android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/onetext"
    android:text="天天"
    android:padding="20dp"
    />
</LinearLayout>

**item2**
<?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="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/twotext"
        android:text="商品分类"
        android:layout_gravity="center"
        android:padding="10dp"
        android:layout_width="100dp"
        android:layout_height="100dp" />

    <android.support.v7.widget.RecyclerView

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

**item3**
<?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="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/imagethree"
        android:src="@mipmap/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/textthree"
        android:text="你好"
        android:padding="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

在这里插入图片描述

2.adapter

public class MyAdapter extends RecyclerView.Adapter {
    private Context context;
    private List<LeftUser.DataBean> list;

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

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.item1, viewGroup, false);
        FristViewHolder fristViewHolder = new FristViewHolder(view);
        return fristViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {

        if (holder instanceof FristViewHolder) {
            ((FristViewHolder) holder).mTextView.setText(list.get(i).getName());
        }
    }

    @Override
    public int getItemCount() {
        return list.size() == 0 ? 0 : list.size();
    }

    class FristViewHolder extends RecyclerView.ViewHolder {

        private final TextView mTextView;

        public FristViewHolder(@NonNull View itemView) {
            super(itemView);
            mTextView = itemView.findViewById(R.id.onetext);
            mTextView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mItemClick.onItem(getAdapterPosition());
                }
            });
        }
    }

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

    //定义接口
    public interface ItemClick {
        void onItem(int data);
    }

    private ItemClick mItemClick;

    public void setmItemClick(ItemClick mItemClick) {
        this.mItemClick = mItemClick;
    }
}


public class MyTwoAdapter extends RecyclerView.Adapter {

    private Context context;
    private List<RightUser.DataBean> list;

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

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.item2, viewGroup, false);
        SecondViewHolder secondViewHolder=new SecondViewHolder(view);

        return secondViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
      //填充布局
        if(holder instanceof  SecondViewHolder){

            ((SecondViewHolder) holder).mTextView2.setText(list.get(i).getName());

         GridLayoutManager gridLayoutManager=   new GridLayoutManager(context,3);
            ((SecondViewHolder) holder).mRecyclerView.setLayoutManager(gridLayoutManager);

             MyThreeAdapter myThreeAdapter=new MyThreeAdapter(context,list.get(i).getList());
             ((SecondViewHolder) holder).mRecyclerView.setAdapter(myThreeAdapter);
        }
    }

    @Override
    public int getItemCount() {
        return list.size()==0?0:list.size();
    }

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

    class SecondViewHolder extends RecyclerView.ViewHolder{

        private final TextView mTextView2;
        private final RecyclerView mRecyclerView;

        public SecondViewHolder(@NonNull View itemView) {
            super(itemView);
            mTextView2 = itemView.findViewById(R.id.twotext);
            mRecyclerView = itemView.findViewById(R.id.recythree);
        }
    }
}


public class MyThreeAdapter extends RecyclerView.Adapter {

    private Context context;
    private List<RightUser.DataBean.ListBean> list;

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

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.item3, viewGroup, false);
        ThreeViewHolder threeViewHolder=new ThreeViewHolder(view);
        return threeViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
        if(holder instanceof ThreeViewHolder){
            ((ThreeViewHolder) holder).mtextview.setText(list.get(i).getName());
            Picasso.with(context).load(list.get(i).getIcon()).into(((ThreeViewHolder) holder).imageView);
        }
    }

    @Override
    public int getItemCount() {
        return list.size()==0?0:list.size();
    }

    class ThreeViewHolder extends RecyclerView.ViewHolder{

        private final TextView mtextview;
        private final ImageView imageView;

        public ThreeViewHolder(@NonNull View itemView) {
            super(itemView);
            mtextview = itemView.findViewById(R.id.textthree);
            imageView = itemView.findViewById(R.id.imagethree);
        }
    }
}

3.bean类

public class LeftUser {

    /**
     * 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;
        }
    }
}

public class RightUser {

    /**
     * msg : 获取子分类成功
     * code : 0
     * data : [{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}],"name":"影音娱乐","pcid":"10"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"游戏手机","pcid":11,"pscid":66},{"icon":"http://120.27.23.105/images/icon.png","name":"拍照手机","pcid":11,"pscid":67},{"icon":"http://120.27.23.105/images/icon.png","name":"大屏手机","pcid":11,"pscid":68},{"icon":"http://120.27.23.105/images/icon.png","name":"老人机","pcid":11,"pscid":69},{"icon":"http://120.27.23.105/images/icon.png","name":"对讲机","pcid":11,"pscid":70}],"name":"手机通讯","pcid":"11"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"蓝牙耳机","pcid":12,"pscid":71},{"icon":"http://120.27.23.105/images/icon.png","name":"移动电源","pcid":12,"pscid":72},{"icon":"http://120.27.23.105/images/icon.png","name":"苹果周边","pcid":12,"pscid":73},{"icon":"http://120.27.23.105/images/icon.png","name":"手机耳机","pcid":12,"pscid":74},{"icon":"http://120.27.23.105/images/icon.png","name":"充电器","pcid":12,"pscid":75},{"icon":"http://120.27.23.105/images/icon.png","name":"数据线","pcid":12,"pscid":76},{"icon":"http://120.27.23.105/images/icon.png","name":"手机电池","pcid":12,"pscid":77},{"icon":"http://120.27.23.105/images/icon.png","name":"保护套","pcid":12,"pscid":78}],"name":"手机配件","pcid":"12"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"单反相机","pcid":13,"pscid":79},{"icon":"http://120.27.23.105/images/icon.png","name":"单电/微单相机","pcid":13,"pscid":80},{"icon":"http://120.27.23.105/images/icon.png","name":"拍立得","pcid":13,"pscid":81},{"icon":"http://120.27.23.105/images/icon.png","name":"数码相机","pcid":13,"pscid":82},{"icon":"http://120.27.23.105/images/icon.png","name":"摄像机","pcid":13,"pscid":83},{"icon":"http://120.27.23.105/images/icon.png","name":"镜头","pcid":13,"pscid":84}],"name":"摄影摄像","pcid":"13"}]
     */

    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 : 3
         * list : [{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}]
         * name : 影音娱乐
         * pcid : 10
         */

        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 : 10
             * pscid : 61
             */

            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;
            }
        }
    }
}

4.model层

public class FenModel {

    private Handler handler=new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };
    public void login(String url, final NewBack newBack){
        OkHttpUtils.onGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Gson gson=new Gson();
                        LeftUser leftUser = gson.fromJson(string, LeftUser.class);
                        List<LeftUser.DataBean> data =leftUser.getData();
                        newBack.onSuccessUser(data);
                    }
                });
            }
        });
    }


    public void login2(String url2, final NewBack newBack){
        OkHttpUtils.onGet(url2, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Gson gson=new Gson();
                        RightUser rightUser = gson.fromJson(string, RightUser.class);
                        List<RightUser.DataBean> dat = rightUser.getData();
                        newBack.onSuccessUserBean(dat);
                    }
                });
            }
        });
    }

}

5.p层

public class FenPersenter {
    private FenModel fenModel;
    private FenView fenView;

    public FenPersenter(FenView fenView) {
         fenModel = new FenModel();
        this.fenView = fenView;
    }

    public void login(String url){
        fenModel.login(url, new NewBack() {
            @Override
            public void onSuccessUser(List<LeftUser.DataBean> list) {
                fenView.viewSuccessUser(list);
            }

            @Override
            public void onSuccessUserBean(List<RightUser.DataBean> rightlist) {

            }

            @Override
            public void fail(String fail) {

            }
        });
    }

    public void login2(String url2){
        fenModel.login2(url2, new NewBack() {
            @Override
            public void onSuccessUser(List<LeftUser.DataBean> list) {

            }

            @Override
            public void onSuccessUserBean(List<RightUser.DataBean> rightlist) {
                fenView.viewSuccessUserBean(rightlist);
            }

            @Override
            public void fail(String fail) {

            }
        });
    }
}

6.view层

public interface FenView {
    void viewSuccessUser(List<LeftUser.DataBean> list);
    void viewSuccessUserBean(List<RightUser.DataBean> beanList);
    void viewfail(String fail);
}

7.net层 okhttp的封装

public interface NewBack {
    void onSuccessUser(List<LeftUser.DataBean> list);
    void onSuccessUserBean(List<RightUser.DataBean> rightlist);

    void fail(String fail);


public class OkHttpUtils {

    private static final String MTHOD_GET = "GET";
    private static OkHttpClient client;

    public OkHttpUtils() {
    }

    public static void init(){
        client = new OkHttpClient.Builder()
                .readTimeout(3000,TimeUnit.MILLISECONDS)
                .writeTimeout(3000,TimeUnit.MILLISECONDS)
                .connectTimeout(3000,TimeUnit.MILLISECONDS)
                .build();
    }

    public static Request createRequest(String url,String method){
        Request.Builder builder=new Request.Builder().url(url);
        Request request=null;
        switch (method){
            case MTHOD_GET:
                request = builder.get().build();
                break;
        }
        return request;

    }

    public static void onGet(String url, Callback callBack){
        Request request = createRequest(url, MTHOD_GET);
        Call call = client.newCall(request);
        call.enqueue(callBack);
    }

}

8.app注册

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        OkHttpUtils.init();
    }
}

9.mainactivity

public class MainActivity extends AppCompatActivity implements FenView {

    private String leftpath = "http://www.zhaoapi.cn/product/getCatagory";
    private String rightpath = "http://www.zhaoapi.cn/product/getProductCatagory?cid=";
    int page = 3;
    private RecyclerView mRecyone;
    private RecyclerView mRecytwo;
    String url3="";
    private MyAdapter myAdapter;
    private MyTwoAdapter myTwoAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化数据
        initView();
        //p层
        final FenPersenter fenPersenter = new FenPersenter(this);
        fenPersenter.login(leftpath);

        url3=rightpath+page;
        fenPersenter.login2(url3);

        myAdapter = new MyAdapter(this, null);
        myTwoAdapter = new MyTwoAdapter(this, null);
        myAdapter.setmItemClick(new MyAdapter.ItemClick() {
            @Override
            public void onItem(int data) {
                url3=rightpath+(data+1);
                fenPersenter.login2(url3);
            }
        });
    }

    private void initView() {
        mRecyone = (RecyclerView) findViewById(R.id.recyone);
        mRecytwo = (RecyclerView) findViewById(R.id.recytwo);
    }

    //recyclerview1
    @Override
    public void viewSuccessUser(List<LeftUser.DataBean> list) {
        LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
        mRecyone.setLayoutManager(layoutManager);
        myAdapter.setList(list);
        mRecyone.setAdapter(myAdapter);

    }

    @Override
    public void viewSuccessUserBean(List<RightUser.DataBean> beanList) {
        GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 1);
        mRecytwo.setLayoutManager(gridLayoutManager);
        myTwoAdapter.setList(beanList);
        mRecytwo.setAdapter(myTwoAdapter);
    }

    @Override
    public void viewfail(String fail) {

    }
}

10权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
在application中注册app
android:name=".App"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值