自定义View

本文介绍了一个自定义的Android视图组件AddView,该组件包含加减按钮和一个显示数值的EditText,用于实现商品数量的增减功能。通过监听按钮点击事件,组件能够更新显示的数值,并提供回调接口通知外部数值变化。

public class AddView extends LinearLayout {

private TextView jian;
private EditText edNum;
private TextView add;
private int num;

public AddView(Context context) {
    this(context, null);
}

public AddView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public AddView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    initView(context);
}

private void initView(Context context) {
    View view = LayoutInflater.from(context).inflate(R.layout.carview, this, true);
    //获取资源id
    jian = (TextView) findViewById(R.id.jian);
    edNum = (EditText) findViewById(R.id.ed_num);
    add = (TextView) findViewById(R.id.add);
    edNum.setText("1");
    //添加
    add.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            //转换类型
            num=Integer.parseInt(edNum.getText().toString());
            num++;
            edNum.setText(num+"");
            if (addCallBack!=null){
                addCallBack.numCallback(num);
            }
            addCallBack.numCallback(num);
        }
    });
    //减少
    jian.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            num=Integer.parseInt(edNum.getText().toString());
            num--;
            if (num==0){
                num=1;
                Toast.makeText(getContext(),"商品数量不能小于1",Toast.LENGTH_SHORT).show();;
            }
            edNum.setText(num+"");
            if (addCallBack!=null){
                addCallBack.numCallback(num);
            }
            addCallBack.numCallback(num);
        }
    });

}

private AddCallBack addCallBack;

public void  setAddView(AddCallBack addCallBack) {
    this.addCallBack = addCallBack;
}

//接口
public interface AddCallBack{
    void numCallback(int num);
}

}
xml布局

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/jian"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-"
            android:textSize="16sp"
            />
        <EditText
            android:id="@+id/ed_num"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"
            />
        <TextView
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            android:textSize="16sp"/>
    </LinearLayout>

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值