1.自定义类
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bwie.selfviewdemo.R;
/**
* Created by eric on 2018/4/10.
*/
public class AddDecreaseView extends LinearLayout {
public AddDecreaseView(Context context) {
this(context, null);
}
public AddDecreaseView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public AddDecreaseView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private EditText etNum;
// 1. 定义一个接口
public interface OnAddDecreseClickListener {
void onClickDecrease(View v);
void onClickAdd(View v);
}
// 2. 声明一个接口对象
private OnAddDecreseClickListener listener;
// 3. 给外部提供一个设置接口对象的方法
public void setOnAddDecreaseClickListener(OnAddDecreseClickListener listener) {
this.listener = listener;
}
public int getNum() {
return Integer.valueOf(etNum.getText().toString().trim());
}
public void setNum(int num) {
etNum.setText(num + "");
}
private void initView(Context context) {
// 注意:第三个参数,一定是this,代表添加视图到本View上
View view = View.inflate(context, R.layout.view_add_decrease, this);
TextView txtDecrease = view.findViewById(R.id.txt_decrease);
TextView txtAdd = view.findViewById(R.id.txt_add);
etNum = view.findViewById(R.id.et_num);
// 6. 在合适的时机触发事件
txtDecrease.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null) {
listener.onClickDecrease(view);
}
}
});
txtAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null) {
listener.onClickAdd(view);
}
}
});
// View.inflate(context, R.layout.view_add_decrease, null);
}
}
2.MainActivity类
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import com.bwie.selfviewdemo.view.AddDecreaseView;
public class MainActivity extends AppCompatActivity {
private AddDecreaseView adv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adv = findViewById(R.id.adv_show);
// 4. 实例化一个接口的对象
AddDecreaseView.OnAddDecreseClickListener listener = new AddDecreaseView.OnAddDecreseClickListener() {
@Override
public void onClickDecrease(View v) {
int num = adv.getNum();
if (num > 1) {
num--;
adv.setNum(num);
}
}
@Override
public void onClickAdd(View v) {
int num = adv.getNum();
num++;
adv.setNum(num);
}
};
// 5.实例化好的对象传给内部
adv.setOnAddDecreaseClickListener(listener);
}
}