组合式自定义控件实现加减操作

package com.example.zidingyizuheview;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by DELL on 2018/5/15.
 */

public class MyView extends LinearLayout implements View.OnClickListener {


    private ImageView img_add;
    private ImageView img_sub;
    private TextView tv;
    private Integer value;

    //定义一个变量规范商品数量的最大值
    private int max = 20;

    //定义一个方法方便更改调用
    public void setMaxValue(int maxValue){
        max = maxValue;
    }

    public MyView(@NonNull Context context) {
        this(context,null);
    }

    public MyView(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    //初始化
    private void init(Context context) {
        View view = View.inflate(context, R.layout.my_add_view,this);

        img_add = view.findViewById(R.id.img_add);
        img_sub = view.findViewById(R.id.img_sub);
        tv = view.findViewById(R.id.tv);

        img_add.setOnClickListener(this);
        img_sub.setOnClickListener(this);

        //获取值
        getValue();

    }

    private int getValue() {
        String s = tv.getText().toString().trim();
        if(!TextUtils.isEmpty(s)){
            value = Integer.valueOf(s);
        }
        return value;
    }

    @Override
    public void onClick(View view) {

        switch (view.getId()){
            case R.id.img_add:
                setAdd();
                break;

            case R.id.img_sub:
                setSub();
                break;
        }
    }

    private void setSub() {
        if(value > 0){
            value--;
            tv.setText(value+"");
        }

        if(mOnNumberChangerListener != null){
            mOnNumberChangerListener.OnNumberChanger(value);
        }
    }

    private void setAdd() {
        if(value < max){
            value++;
            tv.setText(value+"");
        }

        if(mOnNumberChangerListener != null){
            mOnNumberChangerListener.OnNumberChanger(value);
        }
    }

    //定义一个接口
    public interface OnNumberChangerListener{
        //定义一个回调方法
        void OnNumberChanger(int value);
    }

    //定义接口对象
    private OnNumberChangerListener mOnNumberChangerListener;

    public void setOnNumberChangerListener(OnNumberChangerListener onNumberChangerListener){
        mOnNumberChangerListener = onNumberChangerListener;
    }
}

猜你喜欢

转载自blog.csdn.net/gaoyiranblog/article/details/80342233