总结一下,android的监听绑定方法主要有一下五种方法。分别讲述一下:
【方法一】通过xml文件绑定
首先讲的这种方法比较少使用。在支付宝第三方中有应用。
<Button
android:id="@+id/pay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:onClick="pay"
android:text="支付"
tools:ignore="HardcodedText" />
在xml布局文件中,通过android:onClick="method_name"方法绑定一个方法名为method_name的监听相应,在点击时会通过反射的方法调用该方法。在这段代码中,给button绑定了一个方法名为pay的监听相应。对应的,在使用这个xml的Activity中,需要实现该pay()方法。
public void pay(View v) {
//your method
}
在OnCreate中是需要setContentView(),甚至不需要findViewById就可以实现监听绑定了。
【方法二】匿名内部类
这种方法较为简便,但是在需要绑定的监听较多的情况下,代码可读性下降。在空间较多的Activity中不建议使用。例如给ivImage设置监听
ivImage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//your method
}
});
这种方法比较清晰。在控件或者监听较多的情况下,使用该方法比较方便。而且实现事件监听类可以在构造方法中传入一些必须的参数。
public class shareButtonListener implements OnClickListener {
private Content contentChoose;
public shareButtonListener(Content content) {
//传入Content类型
super();
this.contentChoose = content;
}
public shareButtonListener() {
super();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// your method
}
};
【方法五】Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理。但是这种方法在需要绑定的控件监听较多的情况下,可读性也就太好。
public class TestButtonActivity extends Activity implements OnClickListener {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}