您的位置:首页 > 其它

安卓自定义组合式View 加减

2017-10-20 09:10 162 查看
public class AddSubView extends LinearLayout implements View.OnClickListener {
private ImageView iv_sub;
private ImageView iv_add;
private TextView tv_value;
private int mValue;

//再代码中New对象时使用
public AddSubView(Context context) {
this(context, null);
}

//2.在xml中使用是回调
public AddSubView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

//3.在XML中使用,切使用Style风格中
public AddSubView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}

private void initView(Context context) {
//把一个布局文件实例化,并且加载到AddSubView类中
View view = View.inflate(context, R.layout.add_sub_view, this);
//初始化控件
iv_sub = (ImageView) view.findViewById(R.id.iv_sub);
iv_add = (ImageView) view.findViewById(R.id.iv_add);
tv_value = (TextView) view.findViewById(R.id.tv_value);
iv_sub.setOnClickListener(this);
iv_add.setOnClickListener(this);
//获取value值
getValue();
}

//imageview按钮的点击事件
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_add:
addNumber();
break;
case R.id.iv_sub:
subNumber();
break;
default:
break;
}
}

//当前数量值,默认为1,设置对此值获取
private int value = 1;
private int MinNumber = 1;
private int MaxNumber = 5;

public int getMinNumber() {
return MinNumber;
}

public void setMinNumber(int minNumber) {
MinNumber = minNumber;
}

public int getMaxNumber() {
return MaxNumber;
}

public void setMaxNumber(int maxNumber) {
MaxNumber = maxNumber;
}

//获取到的values是从ui拿到的
public int getValue() {
String trim = tv_value.getText().toString().trim();
if (!TextUtils.isEmpty(trim)) {
//因为是字符串,所以要转化成int类型的
value = Integer.valueOf(trim);
}
return value;
}

public void setValue(int value) {
mValue = value;
tv_value.setText(value + "");
}

private void subNumber() {
if (value > MinNumber) {
value--;
}
setValue(value);
if (onNumberChangerListener != null) {
onNumberChangerListener.OnNumberChanger(value);
}
}

private void addNumber() {
if (value < MaxNumber) {
value++;
}
setValue(value);
if (onNumberChangerListener != null) {
onNumberChangerListener.OnNumberChanger(value);
}
}

/*定义接口,及所要调用的接口方法,当商品数量发生变化时,回调给接口
* */
public interface OnNumberChangerListener {
void OnNumberChanger(int value);
}

//定义接口
private OnNumberChangerListener onNumberChangerListener;

//设置方法接收外界传来的接口对象方法
public void setOnNumberChangerListener(OnNumberChangerListener onNumberChangerListener1) {
onNumberChangerListener = onNumberChangerListener1;
}
}

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

<ImageView
android:id="@+id/iv_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/jian"/>

<TextView
android:id="@+id/tv_value"
android:layout_width="50dp"
android:layout_height="50dp"
android:gravity="center"
android:text="1"
android:textColor="@android:color/black"
android:textSize="20sp"/>

<ImageView
android:id="@+id/iv_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/jia"/>
</LinearLayout>

AddSubView addSubView = (AddSubView) findViewById(R.id.addsubview);
addSubView.setMaxNumber(5);
addSubView.setOnNumberChangerListener(new AddSubView.OnNumberChangerListener() {
@Override
public void OnNumberChanger(int value) {
Toast.makeText(MainActivity.this, "变化的数量值" + value, Toast.LENGTH_SHORT).show();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: