在android代码的编写实际情况中,经常会遇到有多个监听器实例的情况,这时候我们不用每一个都调用他们的OnClickListener方法,有两种比较方便有效的方法,总结如下:
1、定义一个新类并让它implement OnClickListener:
比如有多个按钮的情况,定义类如下:
class MyButtonClickListener implements OnClickListener {
public void onClick(View v) {
Button button = (Button) v;
if (button == firstButton)
myListener.showMessage(1);
if (button == secondButton)
myListener.showMessage(2);
if (button == thirdButton)
myListener.showMessage(3);
}
}
或者是:
class MyButtonClickListener1 implements OnClickListener {
public void onClick(View v) {
switch(v.getId())
{
case R.id.first_button:
// your code
break;
case R.id.second_button:
// your code
break;
default:
break;
}
}
然后在按钮对象中设置该监听器即可:
firstButton.setOnClickListener(clickListener);
secondButton.setOnClickListener(clickListener);
thirdButton.setOnClickListener(clickListener);
2. 整个Activity implement OnClickListener方法:
如下:
public class MainActivity extends Activity implements OnClickListener
然后要设置监听器的时候可以这么使用:
messageLayout.setOnClickListener(this);
contactsLayout.setOnClickListener(this);
newsLayout.setOnClickListener(this);
settingLayout.setOnClickListener(this);
参数设置为 this ,然后复写 onClick 方法即可。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.message_layout:
// your code
break;
case R.id.contacts_layout:
// your code
break;
case R.id.news_layout:
// your code
break;
case R.id.setting_layout:
// your code
break;
default:
break;
}
}
因为这里implement OnClickListener 方法的是整个Activity,而这个Activity本身就是一个类,所以当它复写onClick方法之后,参数this就表示调用本身的onClick方法。