• Android_基于监听的事件处理机制


    事件监听机制是一种委派式的事件处理机制,事件源(组件)事件处理委托给事件监听器 当事件源发生指定事件时,就通知指定事件监听器,执行相应的操作

     

    五种不同的使用形式:

     

    匿名内部类:

    平时最常用的一种:直接setXxxListener后,重写里面的方法即可; 通常是临时使用一次,复用性不高!

    btnshow.setOnClickListener(new OnClickListener() {    

                //重写点击事件的处理方法onClick()    

                @Override    

                public void onClick(View v) {      

                }    

            });    

     

     

    内部类:

    使用优点:可以在该类中进行复用,可直接访问外部类的所有界面组件!

      protected void onCreate(Bundle savedInstanceState) {    

            super.onCreate(savedInstanceState);    

            setContentView(R.layout.activity_main);     

            //直接new一个内部类对象作为参数    

            btnshow.setOnClickListener(new BtnClickListener());    

        }     

        //定义一个内部类,实现View.OnClickListener接口,并重写onClick()方法    

        class BtnClickListener implements View.OnClickListener    

        {    

            @Override    

            public void onClick(View v) {    

            }    

        }    

     

    外部类:

    就是另外创建一个处理事件的Java文件,这种形式用的比较少!因为外部类不能直接访问用户界面类中的组件,要通过构造方法将组件传入使用;这样导致的结果就是代码不够简洁!

    MyClick.java

    public class MyClick implements OnClickListener {    

    private value;    

    //构造方法传入参数 

        public MyClick(value)    

    {    

    this.value=value;

        }    

        @Override    

        public void onClick(View v) {    

        }    }

    MainActivity.java

    Button.setOnClickListener(new MyClick(value));

     

    直接使用Activity作为事件监听器:

    只需要让Activity类实现XxxListener事件监听接口,在Activity中定义重写对应的事件处理器方法 eg:Actitity实现了OnClickListener接口,重写了onClick(view)方法在为某些组建添加该事件监听对象 时,直接setXxx.Listener(this)即可

    //让Activity方法实现OnClickListener接口   

     

     public class MainActivity extends Activity implements OnClickListener{    

        private Button btnshow;    

        @Override    

        protected void onCreate(Bundle savedInstanceState) {    

            super.onCreate(savedInstanceState);    

            setContentView(R.layout.activity_main);    

                

            btnshow = (Button) findViewById(R.id.btnshow);    

            //直接写个this    

            btnshow.setOnClickListener(this);    

        }    

        //重写接口中的抽象方法    

        @Override    

        public void onClick(View v) {    

            Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         

         }         

    }   

     

    直接绑定到标签:

    就是直接在xml布局文件中对应得Activity中定义一个事件处理方法 eg:public void myClick(View source) source对应事件源(组件) 接着布局文件中对应要触发事件的组建,设置一个属性:onclick = "myclick"即可

     

    Xml:

    android:onClick="myclick"

    Java:

       //自定义一个方法,传入一个view组件作为参数    

        public void myclick(View source)    

        {    

       

        }  

  • 相关阅读:
    Python 教程之String
    python 斐波纳契数列实现
    js 中 document.createEvent的用法
    C#里调用 MysqlDB
    [网购]
    [ENLearning] 2010920
    [EN Learning] 2010913
    [EN Learning] 2010910
    [ENLearning] 2010921
    [EN Learning] 2010916
  • 原文地址:https://www.cnblogs.com/XiaoGao128/p/12254894.html
Copyright © 2020-2023  润新知