public class MyAddSubView extends LinearLayout implements View.OnClickListener { private int number = 1; private TextView tv_sub_view; private TextView tv_number_view; private TextView tv_add_view; public MyAddSubView(Context context) { this(context,null); } public MyAddSubView(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public MyAddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr); } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; tv_number_view.setText(number + ""); } private void initView(Context context, AttributeSet attrs, int defStyleAttr) { View.inflate(context, R.layout.add_sub_view, this); tv_sub_view = findViewById(R.id.tv_sub_view); tv_add_view = findViewById(R.id.tv_add_view); tv_number_view = findViewById(R.id.tv_number_view); tv_add_view.setOnClickListener(this); tv_sub_view.setOnClickListener(this); } OnNumberChangeListener onNumberChangeListener; public void setOnNumberChangeListener(OnNumberChangeListener onNumberChangeListener) { this.onNumberChangeListener = onNumberChangeListener; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_sub_view: if (number > 1) { --number; tv_number_view.setText(number + ""); if (onNumberChangeListener != null) { onNumberChangeListener.OnNumberChange(number); } } else { Toast.makeText(getContext(), "不能再少啦!", Toast.LENGTH_SHORT).show(); } break; case R.id.tv_add_view: ++number; tv_number_view.setText(number + ""); if (onNumberChangeListener != null) { onNumberChangeListener.OnNumberChange(number); } break; } } public interface OnNumberChangeListener { void OnNumberChange(int num); } }