仿淘宝订单listview的嵌套使用

刚刚接了个新的购物app项目,有个订单页面是模拟淘宝做的,需要做到店铺list嵌套里边的商品,想了一下使用list嵌套list实现,但是听别人说很不好处理,自己就额外写了个demo,也没发现那么难,就按着逻辑走下来就出来了,下面先看下效果图

这里写图片描述

实现大概步骤:正常外套的list正常写法,然后再item中写入内部listlayout,然后在adapter中写新的list(这块的逻辑应该没啥问题,运行很流畅,有好实现方案的伙伴分享分享哦),并设置内部adapter,然后点击事件,我是通过接口一层层传出来的,

模拟本地数据

  for (int i = 0; i< 10 ; i++){
            listtwo.clear();
            for (int y = 0 ; y < 5 ; y++){
                listtwo.add(new DataTwo("zuo"+ y ,"you"+ y));
            }
            listone.add(new DataOne("header"+i,"footer"+i,listtwo));
        }

外层list正常代码逻辑

  recyclerviewMain.setLayoutManager(new LinearLayoutManager(this));

        MainAdapter mainAdapter =  new MainAdapter(this,listone);
        recyclerviewMain.setAdapter(mainAdapter);

内层的list设置设配器

        listtwo = listone.get(position).list;
        holder.recyclerviewIn.setLayoutManager(new LinearLayoutManager(context));
       InsideAdapter insideAdapter = new InsideAdapter(context,listtwo);
        holder.recyclerviewIn.setAdapter(insideAdapter);

内层list中item控件点击事件传出

private OnItemButtonOneClickListener mOnItemButtonOneClickListener;
    public void setOnItemButtonOneClickListener(OnItemButtonOneClickListener mOnItemButtonOneClickListener) {
        this.mOnItemButtonOneClickListener = mOnItemButtonOneClickListener;
    }
    private OnItemButtonTwoClickListener mOnItemButtonTwoClickListener;
    public void setOnItemButtonTwoClickListener(OnItemButtonTwoClickListener mOnItemButtonTwoClickListener) {
        this.mOnItemButtonTwoClickListener = mOnItemButtonTwoClickListener;
    }

 holder.tvTwoitemYou.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemButtonOneClickListener.onButtonOneClick(position);
            }
        });
        holder.tvTwoitemZuo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemButtonTwoClickListener.onButtonTwoClick(position);
            }
        });

中间层续传内层接口点击事件,以及外层list具体控件点击事件

 final int pos = holder.getPosition();
        holder.tvHeader.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemButtonOneClickListener.onButtonOneClick(pos);
            }
        });

        insideAdapter.setOnItemButtonOneClickListener(new OnItemButtonOneClickListener() {
            @Override
            public void onButtonOneClick(int position) {
                mOnItemInsideButtonOneClickListener.onButtonInsideOneClick(position);
            }
        });

        insideAdapter.setOnItemButtonTwoClickListener(new OnItemButtonTwoClickListener() {
            @Override
            public void onButtonTwoClick(int position) {
                mOnItemInsideButtonTwoClickListener.onButtonInsideTwoClick(position);
            }
        });

这样事件一层层传出来了 ,也不用在adapter中填写相关业务逻辑,再具体的可以再分出来

其他详细的可以查看源码

点我下载源码

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页