对购物车加减按钮控件的简单封装,几行代码就搞定,采用链式调用,而且样式支持自定义,并且在ListView中和RecyclerView中同样适用.这里的使用步骤讲的不是很细致,需要的朋友可以看下博客,里面讲了封装的过程和想法。如果你还在为商城购物车中的加减控件而烦恼,不妨试一下这个加减控件,相信你会爱上它。如果觉得有用,欢迎star和fork.
商城购物车加减控件的简单封装(续),解决ListView中数据错乱的问题
- 如果您有什么问题或者建议,欢迎加入qq群,这里还可以学习Kotlin。
Attributes | forma | describe |
---|---|---|
editable | boolean | 是否可以手动输入 |
location | string | 输入框的位置(在左边还是右边),默认中间 |
ImageWidth | dimension | 左右2边+-按钮的宽度 |
contentWidth | dimension | 中间EditText的宽度 |
contentTextSize | dimension | 中间EditText的字体大小 |
contentTextColor | color | 中间字体的颜色 |
all_background | color/reference | 整个控件的background |
leftBackground | color/reference | 左面控件的背景 |
rightBackground | color/reference | 右面控件的背景 |
contentBackground | color/reference | 中间控件的背景 |
leftResources | color/reference | 左面控件的资源 |
rightResources | color/reference | 右面控件的资源 |
dependencies {
compile 'com.mengfei:AddSubUtils:1.5.0' // 最新版本
}
或者下载源码包,链接:https://github.com/Jmengfei/AddSubUtils ,引用本地lib,并且在build.gradle中添加:
dependencies {
compile project(':addsubutils')
}
<com.jmf.addsubutils.AddSubUtils
android:id="@+id/add_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
你也可以自定义样式:
<com.jmf.addsubutils.AddSubUtils
android:id="@+id/add_sub_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
jmf:editable="true"
jmf:ImageWidth="60dp"
jmf:contentTextColor="@color/colorText"
jmf:contentWidth="120dp"
jmf:contentTextSize="16sp"
jmf:contentBackground="@color/material_teal_200"
jmf:leftBackground="@drawable/left_selector"
jmf:rightBackground="@drawable/right_selector"
jmf:leftResources="@drawable/minus"
jmf:rightResources="@drawable/plus"/>
AddSubUtils addSubUtils = (AddSubUtils) findViewById(R.id.add_sub);
addSubUtils.setBuyMax(30) // 最大购买数,默认为int的最大值
.setInventory(50) // 库存,默认为int的最大值
.setCurrentNumber(5) // 设置当前数,默认为1
.setStep(5) // 步长,默认为1
.setBuyMin(2) // 购买的最小值,默认为1
.setOnWarnListener(new AddSubUtils.OnWarnListener() {
@Override
public void onWarningForInventory(int inventory) {
Toast.makeText(MainActivity.this, "当前库存:" + inventory, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMax(int max) {
Toast.makeText(MainActivity.this, "超过最大购买数:" + max, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMin(int min) {
Toast.makeText(MainActivity.this, "低于最小购买数:" + min, Toast.LENGTH_SHORT).show();
}
});
holder.list_item_utils
.setStep(1)
.setBuyMax(30)
.setPosition(position) // 传入当前位置,一定要传,不然数据会错乱
.setCurrentNumber(dataBean.getValue())
.setInventory(50)
.setOnWarnListener(new AddSubUtils.OnWarnListener() {
@Override
public void onWarningForInventory(int inventory) {
Toast.makeText(ListViewActivity.this, "不能超过当前库存:" + inventory, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMax(int max) {
Toast.makeText(ListViewActivity.this, "超过最大购买数:" + max, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMin(int min) {
Toast.makeText(ListViewActivity.this, "低于最小购买数:" + min, Toast.LENGTH_SHORT).show();
}
})
.setOnChangeValueListener(new AddSubUtils.OnChangeValueListener() {
@Override
public void onChangeValue(int value,int position) {
setValue(position,value); // 使用传回来的position设置数据
}
});
注意:这里setPosition()是一定要有的
采用的是链式调用,这里你只需要传入你关心的值即可。
一个想搞事情的Android攻城狮
csdn主页:http://blog.csdn.net/sinat_36668731?viewmode=list