觀察者模式
觀察者: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;
}
}
}