Android中RecyclerView实现商品分类功能

 更新时间:2022年02月10日 16:00:08   作者:WWWW.COM  
这篇文章主要为大家详细介绍了Android中RecyclerView实现商品分类功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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服务Service教程

    Android服务Service教程

    Android的服务是开发Android应用程序的重要组成部分。不同于活动Activity,服务是在后台运行,服务没有接口,生命周期也与活动Activity非常不同。通过使用服务我们可以实现一些后台操作,比如想从远程服务器加载一个网页等,下面来看看详细内容,需要的朋友可以参考下
    2021-11-11
  • Android7.0开发实现Launcher3去掉应用抽屉的方法详解

    Android7.0开发实现Launcher3去掉应用抽屉的方法详解

    这篇文章主要介绍了Android7.0开发实现Launcher3去掉应用抽屉的方法,结合实例形式分析了Android7.0 Launcher3调整界面布局的相关操作技巧与注意事项,需要的朋友可以参考下
    2017-11-11
  • Android高仿京东垂直循环滚动新闻栏

    Android高仿京东垂直循环滚动新闻栏

    通过自定义的LinearLayout,并且textView能够循环垂直滚动,而且条目可以点击,显示区域最多显示2个条目,并且还有交替的属性垂直移动的动画效果,通过线程来控制滚动的实现
    2016-03-03
  • photoView实现图片多点触控效果

    photoView实现图片多点触控效果

    这篇文章主要为大家详细介绍了photoView实现图片多点触控效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android设计模式之单例模式实例

    Android设计模式之单例模式实例

    这篇文章主要介绍了Android设计模式之单例模式实例,单例模式是运用最广泛的设计模式之一,在应用这个模式时,单例模式的类必须保证只有一个实例存在
    2023-04-04
  • android之datepicker控件的用法

    android之datepicker控件的用法

    下面小编就为大家带来一篇android之datepicker控件的用法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Android使用RollViewPager实现轮播图

    Android使用RollViewPager实现轮播图

    这篇文章主要为大家详细介绍了Android使用RollViewPager实现轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • android 一些工具类汇总

    android 一些工具类汇总

    本文给大家汇总介绍了一些常用的Android工具类,非常的简单实用,有需要的小伙伴可以参考下
    2016-08-08
  • RollViewPager无限轮播使用方法详解

    RollViewPager无限轮播使用方法详解

    这篇文章主要为大家详细介绍了RollViewPager无限轮播的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android 多进程资料总结

    Android 多进程资料总结

    这篇文章主要介绍了Android 多进程资料总结的相关资料,需要的朋友可以参考下
    2016-09-09

最新评论