android客户端学习-事件监听的三种实现方式

来源:互联网 发布:全球销售网络 编辑:程序博客网 时间:2024/05/29 13:43

/**
 * 使用三种方式实现按钮点击事件的监听
 * 1.匿名内部类实现
 * 2.外部类实现
 * 3.通过接口方式实现
 */
public class ListenerActivity extends Activity implements OnClickListener{
 
 private Button button1; // 匿名内部类实现
 private Button button2; // 外部类实现
 private Button button3; // 通过接口方式实现

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_listener);
  
  setUpView();
  initView();
 }
 
 private void setUpView(){
  button1 = (Button)this.findViewById(R.id.button1);
  button2 = (Button)this.findViewById(R.id.button2);
  button3 = (Button)this.findViewById(R.id.button3);
 }

 private void initView(){
  // 匿名内部类实现
  button1.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View arg0) {
    Log.i("listener", "通过匿名内部类实现");
   }
  });
  
  // 外部类实现
  button2.setOnClickListener(new ListenerExtend(){
   @Override
   public void onClick(View arg0) {
    // 调用父类的onClick
    super.onClick(arg0);
    
    Log.i("listener", "外部类实现,父类的执行完之后,再执行自己独用有的动作");
   }
  });
  
  // 通过接口方式实现
  button3.setOnClickListener(this);
 }
 
 /**
  * 外部类点击时间监听器
  * 使用场景:一般为一个页面多个按钮在点击时会执行同一个动作,但各自又会执行自己独有的动作
  */
 class ListenerExtend implements OnClickListener{

  @Override
  public void onClick(View arg0) {
   Log.i("listener", "外部类实现,会先执行相同的动作");
  }
 }

 /*
  * 通过接口方式实现
  * 通过ListenerActivity 实现 OnClickListener
  * 重载onClick 方法
  */
 @Override
 public void onClick(View arg0) {
  Log.i("listener", "通过接口方式实现");
 }

}

0 0