Android商城App购物车规格联动选择

1.概述

在商城类App中多属性商品的各规格联动选择的实现。

2.效果

商城类App中多属性商品规格选择的效果类型很多,本文实现的效果和淘宝相仿,效果如下:
这里写图片描述

3.思路

3.1规格属性联动

实现思路主要与后台接口的数据有关,本文的数据主要包括两个数组,商品的各规格属性的数组以及商品的规格属性组合的数组。此处题主在本地放了一个简单的json数据(可以去assets中修改数据,增加规格或者规格属性组合)。
如下:

{
  "id": "1",
  "price": "3400~3500",
  "repertory": "22",
  "img": "http://www.ucicq.com/uploads/allimg/170304/03150NL5_0.jpeg",
  "specKey": [
    {
      "id": "1",
      "spec_name": "颜色",
      "spec_key": [
        "白色",
        "红色",
        "金色"
      ]
    },
    {
      "id": "2",
      "spec_name": "霸气",
      "spec_key": [
        "见闻色",
        "武装色",
        "霸王色"
      ]
    },
    {
      "id": "3",
      "spec_name": "尺寸",
      "spec_key": [
        "钻地",
        "爬行",
        "飞行"
      ]
    }
  ],
  "specsGroup": [
    {
      "id": "1",
      "price": "90.00",
      "repertory": "25",
      "goods_spec": [
        "白色",
        "见闻色",
        "钻地"
      ],
      "img": "http://img3.imgtn.bdimg.com/it/u=2247424153,1809959294&fm=11&gp=0.jpg"
    },
    {
      "id": "2",
      "price": "100.00",
      "repertory": "4",
      "goods_spec": [
        "红色",
        "见闻色",
        "钻地"
      ],
      "img": "http://www.005.tv/uploads/allimg/170208/1S92W191-19.jpg"
    },
    {
      "id": "3",
      "price": "200.00",
      "repertory": "2",
      "goods_spec": [
        "红色",
        "武装色",
        "飞行"
      ],
      "img": "http://imgsrc.baidu.com/forum/w=580/sign=92466e82763e6709be0045f70bc69fb8/71e24cd02f2eb938ae90e857dc628535e4dd6f98.jpg"
    },
    {
      "id": "4",
      "price": "300.00",
      "repertory": "12",
      "goods_spec": [
        "红色",
        "霸王色",
        "飞行"
      ],
      "img": "http://imgsrc.baidu.com/forum/w=580/sign=54bcb81c855494ee87220f111df4e0e1/768ca80f4bfbfbed0c060fdc71f0f736aec31fdc.jpg"
    },
    {
      "id": "5",
      "price": "400.00",
      "repertory": "22",
      "goods_spec": [
        "金色",
        "霸王色",
        "爬行"
      ],
      "img": "http://www.005.tv/uploads/allimg/170208/1S92S645-8.jpg"
    },
    {
      "id": "6",
      "price": "500.00",
      "repertory": "22",
      "goods_spec": [
        "金色",
        "霸王色",
        "飞行"
      ],
      "img": "http://zgsuixian.com/up/2017-2/201702051016251725888.jpg"
    }
  ]
}

数据中该商品有3种规格,各规格下包含3种属性,各个规格属性组合应该为27种。但是在实际数据中,所给出的规格属性组合只有6种,说明还有21种规格属性组合的商品是没有的(此处暂不考虑库存)。所以在规格选择时,需要在UI上展现出来。本文思路是构建几个可供查找的数组,在每次选择时遍历查找,从而设置状态。
3.2规格中属性根据属性的字数 动态换行
此处用到了六六大侠 一篇博客中的jar包, 将jar包中的内容写成了代码中的三个类,其中自定义的控件customListView在listview中计算控件高度时仍存在问题,代码中使用的addView动态加载(之后会参考其中的逻辑,将此控件优化)。

4.实现代码

4.1项目结构
这里写图片描述
4.2xml布局此处只贴两处
4.2.1Dialog的布局 dialog_select_more

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/rv_one"
        android:layout_width="match_parent"
        android:layout_height="80dp">

        <View
            android:id="@+id/view"
            android:layout_width="match_parent"
            android:layout_height="20dp"
            android:background="@color/main_transparent" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_below="@+id/view"
            android:background="@color/main_color_white">

            <TextView
                android:id="@+id/tv_goods_price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="93dp"
                android:layout_marginTop="16dp"
                android:text="¥438.00"
                android:textColor="@color/colorPrimary"
                android:textSize="@dimen/ui_26_sp" />

            <ImageView
                android:id="@+id/iv_dismiss_dialog"
                
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值