zoukankan      html  css  js  c++  java
  • Android知识整理(2)【转】android中三种onClick事件的实现方式与对比

    记在笔记中的,忘了在哪看的了,发到博客上保存。

    -----------------------------------------------------------------------------------------------------------------------------

    方式一:在activity的onCreate()方法中,嵌入如下代码:

    1 Button button = (Button)findViewById(R.id.button1);
    2 button.setOnClickListener(new OnClickListener() {
    3 @Override
    4 public void onClick(View arg0) {
    5 TextViewtextview = (TextView)findViewById(R.id.textView1);
    6 textview.setText("Button");
    7 }
    8 });

     

    这种方式用findviewbyid通过id实例化出来这个button,然后通过设置button的listener监听对象,并同时实现接口OnClickListenter的OnClick()方法。这种方式的代码量不多,但是在java中,面向对象的思想,关于耦合,模块化它达不到。代码堆叠在一起,比较臃肿。

    ----------------------------------------------------------------------------------------------------------------------------------------

    方式二:让acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,activity中的代码为:

     1 public class TestOnClickActivity extends Activity {
     2 private TextViewtextview;
     3 
     4 @Override
     5 public void onCreate(Bundle savedInstanceState) {
     6 super.onCreate(savedInstanceState);
     7 setContentView(R.layout.main);
     8 Button button = (Button)findViewById(R.id.button1);
     9 this.textview = (TextView)findViewById(R.id.textView1);
    10 button.setOnClickListener(new Button_Listener(this));
    11 }
    12 
    13 public TextViewgetTextview() {
    14 return this.textview;
    15 }
    16 }

    类Button_Listener的代码为:

     1 classButton_Listener implements OnClickListener {
     2 private TestOnClickActivity activity;
     3 
     4 public Button_Listener(TestOnClickActivity activity) {
     5 this.activity = activity;
     6 }
     7 
     8 @Override
     9 public void onClick(View v) {
    10 TextViewtextview = activity.getTextview();
    11 textview.setText("你点击了Button");
    12 
    13 }
    14 }

    在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。

    这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity,将其作为成员。并且,我们需要在TestOnClickActivity中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。

    虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐。

    -------------------------------------------------------------------------------------------------------------------------------------------------

    方式三:在组件文件main.xml中,对Button加入:

    1 android:onClick="onClick_Event"

    在activity中加入以下代码:

    1 public void onClick_Event(View view) {
    2 TextViewtextview = (TextView)findViewById(R.id.textView1);
    3 textview.setText("Button");
    4 }

    在方式三种,我们只需要在TestOnClickActivity中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。

    代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强!

  • 相关阅读:
    医院科室管理系统日志实现
    遍历hashmap
    java用于控制可见性的4个访问修饰符
    java中error和exception
    线程的状态
    线程间的通信
    位运算(1的个数;2.判断奇偶)
    24点组合
    Sequential 类的设备迁移
    gluon多线程迭代器
  • 原文地址:https://www.cnblogs.com/lihualuo/p/3654152.html
Copyright © 2011-2022 走看看