Android中生成商品的辅助属性类似排列组合

下面来看一张图

这种在app端录入商品的时候,会去添加一些商品的辅助规格 ,例如一件衣服的尺码颜色,比如尺码有 S ,M, L, XL ,颜色有 红色,蓝色,白色,紫色,那么就有 4X4 也就是16中组合方式,根据需要自行选择,我们就要实现这种效果,先看下效果的视频图

这里主要介绍生成的数据思路:

1.点击后把属性默认的布尔值chose设置为 chose=!chose;这里举例属性值有一个 属性id 属性名称,给一个默认的选中值,默认不选中。

public class AttrBean{


        public String id;
        public String name;
        public boolean chose=false;



}

2.每次点击后都要去重新生成列表。定义一个集合来接你所选择然后生成的数据,比如我只需要生成一个 属性名称 和一个价格

这里自定义一个类

public class GoodsBean{


public String name;
public String price;


public GoodsBean(String name,String price){
this.name=name;
this.price=price;

 }

}

用一个集合来接它 ArrayList<GoodsBean> zum=new ArrayList<>();  注意:记得每次点击属性的时候 往集合里赋值前要把之前的的值清空。

 public void setGoodsAttar() {
        //选了商品的属性值
        zum.clear();


        for (AttrBean item : chose) {//一个属性 对应多个值 chose是所有的属性集合

            getAttarData(item.subinfo);

        }
        //筛选完了  todo:这里是你接下来的操作 不做过多介绍 你或者把zun赋给一个列表或是怎样
        

    }

 

 public void getAttarData(ArrayList<AttrBean> item) {

        if (zum.size() == 0) {

            for (AttrBean t : item) {
                if (t.chose) {

                    GoodsBean goodsBean = new GoodsBean(t.name, "");
                    zum.add(goodsBean);
                }
            }
        } else {
            ArrayList<GoodsBean> savato = new ArrayList<>();

            for (AttarInfoBean t : zum) {

                for (AttrBean y : item) {

                    if (y.chose) {
                        String name = t.name + "_" + y.name;
                   
                        AttarInfoBean goodsBean = new AttarInfoBean(name, "");
                        savato.add(goodsBean);
                    }
                }

            }
            if(savato.size()>0) {
                zum=savato;
    
            }

        }


    }

 

思路如上,可以借鉴下思路。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章