本文实例为大家分享了Android中RecyclerView实现商品分类功能的具体代码,供大家参考,具体内容如下
三个个RecyclerView实现
//左边的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:orientation="vertical"> <TextView android:id="@+id/tv_name" android:textSize="18sp" android:text="阿萨德发的" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
//右边的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/name"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/right_recy" android:layout_below="@+id/name"/> </RelativeLayout>
//子布局
<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/image2" android:layout_width="90dp" android:layout_height="90dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title1" /> </LinearLayout>
//定义一个接口
public interface CallBack {
void onSuccess(List<LeftBean.DataBean> list);
void onFailer(String error);
}//左边的Model层
public class LeftModel {
    private  String path="http://www.zhaoapi.cn/product/getCatagory";
    public void getData(final CallBack callBack){
        OkHttp okHttp=new OkHttp();
        okHttp.get(path).getDataLiserner(new OkHttp.GetData() {
            @Override
            public void Data(String s) {
                Gson gson=new Gson();
                LeftBean json = gson.fromJson(s, LeftBean.class);
                List<LeftBean.DataBean> data = json.getData();
                if (data!=null){
                    callBack.onSuccess(data);
                }else {
                    callBack.onFailer("失败");
                }
            }
        });
    }
}//左边的Presenter层
public class LeftPresenter {
    private LeftView leftView;
    private final LeftModel leftModel;
    public LeftPresenter(LeftView leftView) {
        this.leftView = leftView;
        leftModel = new LeftModel();
    }
    public void showLeft(){
        leftModel.getData(new CallBack() {
            @Override
            public void onSuccess(List<LeftBean.DataBean> list) {
                leftView.onSuccess(list);
            }
            @Override
            public void onFailer(String error) {
                leftView.Failer(error);
            }
        });
    }
}//View层
public interface LeftView {
   void onSuccess(List<LeftBean.DataBean> list);
   void Failer(String error);
}//左边的适配器
public class LeftRecycAdapter extends RecyclerView.Adapter<LeftRecycAdapter.LeftViewHoler>{
    private Context mContext;
    private List<LeftBean.DataBean> list;
    public LeftRecycAdapter(Context mContext, List<LeftBean.DataBean> list) {
        this.mContext = mContext;
        this.list = list;
    }
    @NonNull
    @Override
    public LeftViewHoler onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.left_item, viewGroup,false);
        LeftViewHoler leftViewHoler=new LeftViewHoler(view);
        return leftViewHoler;
    }
    @Override
    public void onBindViewHolder(@NonNull LeftViewHoler leftViewHoler, int position) {
        leftViewHoler.textView.setText(list.get(position).getName());
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public class LeftViewHoler extends RecyclerView.ViewHolder {
        private TextView textView;
        public LeftViewHoler(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.tv_name);
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onClickListener.onclick(v,getAdapterPosition());
                }
            });
        }
    }
    public interface OnClickListener{
        void onclick(View view,int position);
    }
    OnClickListener onClickListener;
    public void setOnclickListener(OnClickListener onclickListener){
        this.onClickListener=onclickListener;
    }
}开始右边的了
//右边的接口
public interface CallBackRight {
    void onSuccess2(List<RightBean.DataBean> list);
    void onFailer2(String error);
}//右边的Model层
public class RightModel {
   // private String path1="http://www.zhaoapi.cn/product/getProductCatagory?cid=3&tdsourcetag=s_pcqq_aiomsg";
    public void showright(final String cid2, final CallBackRight callBackRight){
                OkHttp okHttp=new OkHttp();
                okHttp.get(cid2).getDataLiserner(new OkHttp.GetData() {
                    @Override
                    public void Data(String s) {
                        Gson gson=new Gson();
                        RightBean json = gson.fromJson(s, RightBean.class);
                        List<RightBean.DataBean> data = json.getData();
                        if (data!=null){
                            callBackRight.onSuccess2(data);
                        }else {
                            callBackRight.onFailer2("错误");
                        }
                    }
                });
    }
}//右边的Presenter层
public class RightPresenter {
    private final RightModel rightModel;
    private RightView rightView;
    public RightPresenter(RightView rightView) {
        this.rightView = rightView;
        rightModel = new RightModel();
    }
    public void showright(String id){
        rightModel.showright(id, new CallBackRight() {
            @Override
            public void onSuccess2(List<RightBean.DataBean> list) {
                rightView.onSuccess2(list);
            }
            @Override
            public void onFailer2(String error) {
                rightView.onFailer2(error);
            }
        });
    }
}//右边的View层
public interface RightView {
    void onSuccess2(List<RightBean.DataBean> list);
    void onFailer2(String error);
}//右边的适配器
public class RightRecycAdapter extends RecyclerView.Adapter<RightRecycAdapter.ViewHolder> {
    private Context mContext;
    private List<RightBean.DataBean> list;
    public RightRecycAdapter(Context mContext, List<RightBean.DataBean> list) {
        this.mContext = mContext;
        this.list = list;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.right_item, viewGroup, false);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
        viewHolder.textView.setText(list.get(position).getName());
        List<RightBean.DataBean.ListBean> list = this.list.get(position).getList();
        GridLayoutManager gridLayoutManager=new GridLayoutManager(mContext,3);
        viewHolder.recyclerView.setLayoutManager(gridLayoutManager);
        ChildAdapter childAdapter=new ChildAdapter(mContext,list);
        viewHolder.recyclerView.setAdapter(childAdapter);
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView textView;
        private RecyclerView recyclerView;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.name);
            recyclerView=itemView.findViewById(R.id.right_recy);
        }
    }
}//子类适配器
public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.ViewHolder> {
    private Context context;
    private List<RightBean.DataBean.ListBean> list;
    public ChildAdapter(Context context, List<RightBean.DataBean.ListBean> list) {
        this.context = context;
        this.list = list;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.child, viewGroup, false);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
        viewHolder.textView.setText(list.get(position).getName());
        Picasso.with(context).load(list.get(position).getIcon()).into(viewHolder.imageView);
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        private ImageView imageView;
        private TextView textView;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView=itemView.findViewById(R.id.image2);
            textView=itemView.findViewById(R.id.title1);
        }
    }
}//开始使用
public class Fragment1 extends Fragment implements LeftView,RightView {
    private View view;
    private RecyclerView left;
    private RecyclerView right;
    private RightPresenter rightPresenter;
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            final List<LeftBean.DataBean> list = (List<LeftBean.DataBean>) msg.obj;
            LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
            left.setLayoutManager(linearLayoutManager);
            LeftRecycAdapter leftRecycAdapter=new LeftRecycAdapter(getActivity(),list);
            left.setAdapter(leftRecycAdapter);
            leftRecycAdapter.setOnclickListener(new LeftRecycAdapter.OnClickListener() {
                @Override
                public void onclick(View view, int position) {
                    int cid = list.get(position).getCid();
                    rightPresenter.showright("http://www.zhaoapi.cn/product/getProductCatagory?cid="+cid);
                }
            });
            //List<RightBean.DataBean> list1 = (List<RightBean.DataBean>) msg.obj;
        }
    };
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_fragment1, container, false);
        initView();
        return view;
    }
    private void initView() {
        LeftPresenter leftPresenter=new LeftPresenter(this);
        leftPresenter.showLeft();
        left = (RecyclerView) view.findViewById(R.id.left_recy);
        right = (RecyclerView) view.findViewById(R.id.right_recy);
        rightPresenter = new RightPresenter(this);
    }
    @Override
    public void onSuccess(List<LeftBean.DataBean> list) {
        Message message = Message.obtain();
        message.obj=list;
        handler.sendMessage(message);
    }
    @Override
    public void Failer(String error) {
    }
    @Override
    public void onSuccess2(final List<RightBean.DataBean> list) {
        /*Message message = Message.obtain();
        message.obj=list;
        handler.sendMessage(message);*/
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        LinearLayoutManager linear= new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
                        right.setLayoutManager(linear);
                        RightRecycAdapter rightRecycAdapter=new RightRecycAdapter(getActivity(),list);
                        right.setAdapter(rightRecycAdapter);
                    }
                });
}
    @Override
    public void onFailer2(String error) {
    }
}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。
您可能感兴趣的文章:
- Android性能优化之RecyclerView分页加载组件功能详解
 - Android开发使用RecyclerView添加点击事件实例详解
 - Android RecyclerView实现九宫格效果
 - Android Recyclerview实现左滑删除功能
 - Android中RecyclerView实现简单购物车功能
 - Android实现recyclerview城市字母索引列表
 - Android开发RecyclerView单独刷新使用技巧