自定义的监听问题

来源:互联网 发布:qq飞车暗风暴数据 编辑:程序博客网 时间:2024/04/30 00:23

当我们自定义View的时候,如果需要返回值,那么就需要自定义一个监听器。

这里用一个自定义的数字选框为例。

首先定义view。

1、新建view,NumberKeyboardView.Java,自定义view一定要有一个带属性参数的构造函数,这样才可以在xml中使用该View。

public class NumberKeyboardViewextends View{

  public NumberKeyboardView(Context context, AttributeSet attrs) {

    super(context, attrs);

  }

}

2、新建interface,OnNumberKeyboard.java,并定义一个接口函数。

public interface OnNumberKeyboard {

  public void OnSetNumber(int number);

}

3、在NumberKeyboardView中给接口加上set和get函数,先定义接口参数。

OnNumberKeyboard onNumberKeyboard = null;

CLT+S,选择Generate Getters and Setters菜单,把onNumberKeyboard项勾选,也可以展开只选set或get,点击ok,在View中自动生成代码。

 public void setonNumberKeyboard(OnNumberKeyboard onNumberKeyboard) {

  this.mOnNumberKeyboard = onNumberKeyboard;

 }

4、在View中调用该接口函数,当点击到view时调用。(这个完全看你自己想监听什么)

public boolean onTouchEvent(MotionEvent event) {

  if(event.getAction() == MotionEvent.ACTION_DOWN){

   onNumberKeyboard.OnSetNumber(100);

  }

  return super.onTouchEvent(event);

 }

5、在Activity中调用set函数对该view的该事件进行监听。

NumberKeyboardView mNumberKeyboardView = ...;

mNumberKeyboardView.setonNumberKeyboard(new OnNumberKeyboard(){

 public void OnSetNumber(int number){

 }

});

ok,这时候只要view中点击鼠标左键,Activity中OnSetNumber监听器就会响应了。


另一个代码大家自己体会

public class MyClass {
     private MyListener listener= null;

     public interface MyListener {
            public void onDoSomething();
     }

     public void setMyListener(MyListener listener) {
          this.listener= listener;
     }

     public void doSomeThing() {
          if(wvEnventPro != null) {
               wvEnventPro.wvHasClickEnvent();
          }
     }



0 0
原创粉丝点击