下面来看一张图
这种在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;
}
}
}
思路如上,可以借鉴下思路。