观察者模式
观察者:OnClickListener
被观察者:Button
订阅:setOnClickListener()
事件:onClick()
4种订阅方式
-
在布局中指定onClick属性
android:onClick=“click”
btn = (Button) findViewById(R.id.btn);
public void click(View v){} -
使用匿名内部类
btn=(Button) findViewById(R.id.btn);
btn.setOnclickListener(new View.OnClickListener() {
@Override
public void onClick(View v){}
}); -
在当前Activity中实现OnClickListener接口
public class MainActivity extends AppCompatActivity implements View.OnclickListener{
btn_one=(Button) findViewById(R.id.btn);
btn_one.setOnClickListener(this);
public void onClick(View v){
switch (v.getId()){
case R.id.btn_one:break;
}
} -
创建内部类
内部类重写了onClick()方法,订阅时传入内部类对象,点击事件自动触发onClick()方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new MyButton());
private class MyButton implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:break;
}
}
}