//AddDeleteView
public class AddDeleteView extends LinearLayout { private OnAddDelClickListener listener; private EditText etNumber; public AddDeleteView(Context context) { this(context,null); } public AddDeleteView(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public AddDeleteView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr); } private void initView(Context context, AttributeSet attrs, int defStyleAttr) { View.inflate(context,R.layout.add_delete,this); TextView tvAdd =(TextView)findViewById(R.id.tv_add); TextView tvDel =(TextView)findViewById(R.id.tv_delete); etNumber = findViewById(R.id.et_number); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteViewStyle); String leftText = typedArray.getString(R.styleable.AddDeleteViewStyle_left_text); String rightText = typedArray.getString(R.styleable.AddDeleteViewStyle_right_text); String middleText = typedArray.getString(R.styleable.AddDeleteViewStyle_middle_text); tvAdd.setText(rightText); tvDel.setText(leftText); etNumber.setText(middleText); typedArray.recycle(); tvAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onAddClick(view); } }); tvDel.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onDelClick(view); } }); } interface OnAddDelClickListener{ void onAddClick(View v); void onDelClick(View v); } public void setOnAddDelClickListener(OnAddDelClickListener listener){ if(listener!=null){ this.listener=listener; } } public void setNumber(int number){ if(number>0){ etNumber.setText(number+""); } } public int getNumber(){ int number = 0; try { String numberStr = etNumber.getText().toString().trim(); number = Integer.parseInt(numberStr); } catch (NumberFormatException e) { e.printStackTrace(); } return number; } }
//MainActivity
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final AddDeleteView adv= (AddDeleteView) findViewById(R.id.adv); adv.setOnAddDelClickListener(new AddDeleteView.OnAddDelClickListener() { @Override public void onAddClick(View v) { int number = adv.getNumber(); number++; adv.setNumber(number); } @Override public void onDelClick(View v) { int number = adv.getNumber(); number--; adv.setNumber(number); } }); } }