使用recyclerView实现一个京东的分类

首先看一看实现的效果图
使用recyclerView实现一个京东的分类
之后就是实现的代码,首先看布局。

<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/recy_zhu"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="match_parent"/>
    <ScrollView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="8">
        <LinearLayout
            android:padding="15dp"
            android:orientation="vertical"
            android:id="@+id/recy_zi"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </ScrollView>


</LinearLayout>

这个是用了scrollView的布局,具体看代码。

    private List<TypeSp.DataBean> mList;
    private Context mContext;

    public MAdpter(List<TypeSp.DataBean> list, Context context) {
        mList = list;
        mContext = context;
    }
    //绑定布局
    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(mContext, R.layout.item01, null);
        return new MyHolder(view);
    }
    //给控件设置值
    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
        final TypeSp.DataBean dataBean = mList.get(i);
        myHolder.text.setText(dataBean.getName());
        myHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWuek.DianJi(dataBean.getCid()+"");
            }
        });
    }
    @Override
    public int getItemCount() {
        return mList.size();
    }
    //获取控件
    public class MyHolder extends RecyclerView.ViewHolder {
        TextView text;
        public MyHolder(@NonNull View itemView) {
            super(itemView);
            text=itemView.findViewById(R.id.it_text);
        }
    }
    //接口回调
    public interface Wuek{
        void DianJi(String cid);
    }
    private Wuek mWuek;

    public void setWuek(Wuek wuek) {
        mWuek = wuek;
    }
}
public class YAdapter extends RecyclerView.Adapter<YAdapter.MyHolder> {
    private List<Commodity.DataBean.ListBean> mList;
    private Context mContext;

    public YAdapter(List<Commodity.DataBean.ListBean> data, Context applicationContext) {
        this.mList=data;
        this.mContext=applicationContext;
    }
    //绑定布局
    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(mContext, R.layout.item02, null);
        return new MyHolder(view);
    }
    //给控件设置值
    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
        Commodity.DataBean.ListBean listBean = mList.get(i);
        Glide.with(mContext).load(listBean.getIcon()).into(myHolder.imageView);
        myHolder.t1.setText(listBean.getName());
    }
    //获取控件
    @Override
    public int getItemCount() {
        return mList.size();
    }

    public class MyHolder extends RecyclerView.ViewHolder {
        TextView t1,t2;
        ImageView imageView;
        public MyHolder(@NonNull View itemView) {
            super(itemView);
            imageView= itemView.findViewById(R.id.it2_image);
            t1=itemView.findViewById(R.id.it2_text);
        }
    }
}

这里写了两个适配器,因为分左右嘛。
最后就是MainActivity的代码


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.HashMap;
import java.util.List;

import bwie.com.myclassify.adapter.MAdpter;
import bwie.com.myclassify.adapter.YAdapter;
import bwie.com.myclassify.bean.Commodity;
import bwie.com.myclassify.bean.TypeSp;
import bwie.com.myclassify.presenter.CommodityQin;
import bwie.com.myclassify.presenter.FenLei;

public class MainActivity extends AppCompatActivity {
    private String Request="http://www.zhaoapi.cn/product/getCatagory";
    private String Qing="http://www.zhaoapi.cn/product/getProductCatagory";
    private RecyclerView recy_zhu;
    private LinearLayout recy_zi;
    private FenLei mFenLei;
    private CommodityQin mQin;
    private MAdpter mMAdpter;
    private String cid1="1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        //获取控件
        recy_zhu =  findViewById(R.id.recy_zhu);
        recy_zi =  findViewById(R.id.recy_zi);
        //写一个线性布局
        LinearLayoutManager Liner = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        //添加
        recy_zhu.setLayoutManager(Liner);
        //左面的
        zhuLei();
        //右面的
        ziLei();
    }
    private void zhuLei(){
        //网络请求
        mFenLei = new FenLei();
        mFenLei.Diao(Request);
        //请求成功
        mFenLei.setKuai(new FenLei.Kuai() {
            @Override
            public void success(List<TypeSp.DataBean> data) {
                if (data!=null){
                    //获取适配器对象
                    mMAdpter = new MAdpter(data, getApplicationContext());
                    //添加适配器
                    recy_zhu.setAdapter(mMAdpter);
                    //接口回调
                    mMAdpter.setWuek(new MAdpter.Wuek() {
                        @Override
                        public void DianJi(String cid) {
                            cid1=cid;
                            ziLei();
                        }
                    });
                }
            }
        });
    }
    private void ziLei(){
        //网络请求post
        mQin = new CommodityQin();
        //新建一个hashMap
        HashMap<String,String> hashMap= new HashMap<>();
        hashMap.put("cid",cid1);
        mQin.Diao(Qing,hashMap);
        mQin.setKuai(new CommodityQin.Mautio() {
            private YAdapter mYAdapter;
            //请求成功
            @Override
            public void success(List<Commodity.DataBean> data) {
                recy_zi.removeAllViews();
                if (data!=null){
                    //循环所有的data
                    for (int i = 0; i <data.size(); i++) {
                        //动态创建一个TextView
                        TextView textView = new TextView(getApplicationContext());
                        //给TextView赋值
                        textView.setText(data.get(i).getName());
                        //获取一个网格的对象
                        GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 3);
                        //动态创建一个recyclerView
                        RecyclerView recyclerView = new RecyclerView(getApplicationContext());
                        //添加一个网格的对象
                        recyclerView.setLayoutManager(gridLayoutManager);
                        //获取listbean
                        Commodity.DataBean dataBean = data.get(i);
                        List<Commodity.DataBean.ListBean> list = dataBean.getList();
                        //获取适配器对象
                        mYAdapter = new YAdapter(list, getApplicationContext());
                        //添加适配器
                        recyclerView.setAdapter(mYAdapter);
                        //刷新
                        mYAdapter.notifyDataSetChanged();
                        //添加TextView
                        recy_zi.addView(textView);
                        //添加recyclerView
                        recy_zi.addView(recyclerView);
                    }

                }
            }
        });
    }
    //释放内存
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mFenLei=null;
        mQin=null;
    }
}