Android基础——通过XML绑定实现多个点击事件&四种按钮点击事件的总结

我们前三篇文章分别了解到了如何实现按钮点击事件的四种常见方式:
1.使用内部类实现按钮点击事件
2.通过匿名内部类实现按钮点击事件
3.通过activity实现按钮点击事件
4.通过xml绑定实现按钮点击事件

传送门再此:↓↓↓↓↓↓↓↓↓↓↓↓↓↓
1.通过内部类实现按钮点击事件
2.通过匿名内部类实现按钮点击事件
3.通过activity实现按钮点击事件
4.通过xml绑定实现按钮点击事件

=============================================================================================
那么今天我们就来谈谈如何使用xml绑定按钮实现多个点击事件
我们试想一个场景,Android界面里面有着20多个按钮,现在要求这20个按钮都有着自己的点击事件,例如下面这张图:
在这里插入图片描述
我们都知道在xml中绑定按钮可以在xml按钮中添加一个onClick= “xxxx”的属性, 然后去activity中创建出这个xxx方法,然后就可以在这个创建的xxx方法里面实现我们想干的事情,如果我们点击了这个按钮,就会跑xxx这个方法里面的代码 。
具体参考我上一篇:
4.通过xml绑定实现按钮点击事件
你可能会说,这还不简单?我们给他每个按钮创建方法去执行代码不就行了? 是的,没问题这种方法当然可行。
不过我可不这样干,大哥~二十个按钮呐!,天了噜!哪一天项目经理心情不好了,说:小孟,咱们这个页面里面再加100个按钮,是不是我还得再创建100个方法?想想就可怕,等我创建完了也真的该卷铺盖走人了,那要怎么办呢?怎样用一个方法实现多个按钮的点击事件呢?

废话不多说直接上代码:
XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ButtonActivity">
    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="myClick"
        android:text="在xml文件中绑定实现点击事件1"/>
    <Button
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="myClick"
        android:text="在xml文件绑定实现点击事件2"
        />
    <Button
        android:id="@+id/btn3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="myClick"
        android:text="在xml文件中绑定实现点击事件3"/>
    <Button
        android:id="@+id/btn4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="myClick"
        android:text="在xml文件绑定实现点击事件4"
        />
        </LinearLayout>

我这里只写了四个按钮作为示例,要是真写上20个文章会变得好长好长,也没有啥意义,我们能说明问题就好没有必要较真啦~

我们可以看出,这里所有按钮的onClick 属性都指向了同一个方法——myClick方法 那么既然是同一个方法那就应该执行的是同一个点击事件呀,输出同一个代码呀~怎么实现多个点击事件呢?你是不是骗我们的呀!

客官莫着急~请跟着我一起往下扒拉扒拉。

java代码:

public class ButtonActivity extends AppCompatActivity  {
    
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button);

    }
    public void myClick(View view){
    
    
        switch (view.getId()){
    
    
        // 实现每个按钮自己的点击事件
            case R.id.btn1:
                Log.e("TAG","通过xml绑定实现的点击事件1");
                break;
            case R.id.btn2:
                Log.e("TAG","通过xml绑定实现的点击事件2");
                break;
            case R.id.btn3:
                Log.e("TAG","通过xml绑定实现的点击事件3");
                break;
            case R.id.btn4:
                Log.e("TAG","通过xml绑定实现的点击事件4");
                break;
        }
    }
  }
}

ここですでに理解したことを理解していると思いますか?大丈夫ですよ〜ゆっくり各文をピックアップしていきましょう。

 android:onClick="myClick"

まず、XMLコードでは、各コードのonClick属性がアクティビティ内の同じメソッドmyClickをポイントしていると判断しました。どのようにして異なるクリックイベントを実現しますか?

次に、このmyClickメソッドを確認します。

public void myClick(View view){
    
    
        switch (view.getId()){
    
    
        // 实现每个按钮自己的点击事件
            case R.id.btn1:
                Log.e("TAG","通过xml绑定实现的点击事件1");
                break;
            case R.id.btn2:
                Log.e("TAG","通过xml绑定实现的点击事件2");
                break;
            case R.id.btn3:
                Log.e("TAG","通过xml绑定实现的点击事件3");
                break;
            case R.id.btn4:
                Log.e("TAG","通过xml绑定实现的点击事件4");
                break;
        }
    }

別のボタンのIDに応じてボタンのクリックイベント実行コードを見つけるために、スイッチ選択ブランチステートメントを使用していることを理解するのは難しくありません。

Rで見つける必要がありますか?もちろん、いいえ。ButtonがAndroidのTextViewのサブクラスであり、TextViewがViewのサブクラスであることを知っている必要があるため、view.getID()メソッドを使用して現在のコントロールのIDを取得できます。

switch (view.getId()){
    
    

次に、caseステートメントの背後にあるIDは、R.idによってxmlに追加されたIDを介して取得できます。

  case R.id.btn1:

次に、現在のボタンに対して独自のコードを実行します。
その後、ブレークを実行してスイッチから飛び出します。
このように、複数のクリックイベントが実現されますが、この場合、このメソッドを、内部クラス、匿名内部クラス、およびアクティビティによって実装されたインターフェイスでも使用できますか?もちろんできます!もちろん、実装方法はこれだけではなく、こちらが考える方向性です〜ゲストさんご本人次第!

了解しました。xmlバインディングを通じて複数のクリックイベントを実現することはここで停止します。将来、他の状況が発生した場合は、もう一度共有します!

================================================== ================================================== ==

安堵のため息をついて、これらの4つのボタンクリックイベントをまとめてみましょう。一緒に急いでみましょう〜

1.内部クラスを通じてボタンクリックイベントを実装します。

  1. OnClickListenerインターフェイスでonClickメソッドを実装するための内部クラスを作成します
  2. 内部クラスのオブジェクトを作成する
  3. ボタンIDを使用して、Buttonオブジェクトをボタンに追加します。
  4. リスナーsetOnClickListener(xxx)をButtonオブジェクトに追加すると、パラメーターが内部クラスオブジェクトに渡されます
    ============================== ================================
    次に、匿名の内部クラスを通じてボタンクリックイベントを実現します。
  5. ボタンIDを使用して、Buttonオブジェクトをボタンに追加します。
  6. リスナーsetOnClickListener(xxx)をButtonオブジェクトに追加し、匿名の内部クラスをパラメーターとして渡します
  7. 匿名の内部クラスはインターフェースオブジェクトであり、インターフェースにonClickメソッドを実装します
    ================================ ===============================
    3番目に、アクティビティを通じてボタンクリックイベントを実現します。
  8. OnClickListenerインターフェイスをActivityに直接実装し、内部にonClickメソッドを実装します
  9. ボタンIDを使用して、Buttonオブジェクトをボタンに追加します。
  10. リスナーsetOnClickListener(this)をButtonオブジェクトに追加すると、パラメーターをこの中に渡すことができます
    ============================== ================================
    4番目に、xmlバインディングを通じてボタンクリックイベントを実現します。
  11. onClick属性の値をXMLファイルのコードに追加するメソッド
  12. アクティビティでこのメソッドを作成します

================================================= ==============
実際、これらの4つのメソッドには多くの共通点があります。最初の3つのメソッドは、さまざまなメソッドを介してインターフェイスを実装することです。このインターフェイスには、リスニング時にonClickというメソッドがありますデバイスがクリックアクションをリッスンすると、onClickメソッドが実行されます

最后一种通过xml绑定实现按钮的点击事件从本质上说也是这样,不过它实现的方法不再是我们的onClick方法而是我们在属性onClick中定义的方法名的方法,可以变相的理解下,在xml文件的onClick属性就相当于一个监听器+一个接口
其实在开发中没有孰优孰劣,我们根据不同的环境使用的方法也是不同的,我们能做的就是熟悉每一个方法,到时候根据需求去选择使用。

第一种 通过内部类实现的方法:
有一个好处就是可以进行方便的复用、封装性较好 缺点就是麻烦 而且占用内存较大,要new对象

第二种通过匿名内部类实现的方法:
好处就是代码更加规范,其中可以继承一个抽象类还可以实现一个接口。缺点就是没有构造方法,不能再次使用,如果要使用只能老老实实的重做一遍

第三种通过activity 实现的方法:
很方便,代码结构清晰,缺点也是优点吧,生命周期较长 ,我们可以根据这个特性去做很多事情

第四种通过xml绑定按钮实现的方法:
优点 简单,方便,并且不用去创建大量的对象,在activity中的代码量少。这个是一个很常用的方法,缺点嘛~暂时没有发现,如果有大佬知道的请指正。

Android的按钮点击事件的四种常用的实现方法学会了吗? 关于点击事件就先告一段落啦,当然实现方式绝不仅仅是这四种,但是这四种是最常用的。希望大家也好好练习使用一下。
最后客官辛苦啦~谢谢客官耐心看完我这么啰嗦的一篇文。
奇迹不过是努力的另一个名字。时间不会改变一切,能改变一切的人,只有我们自己。----共勉

完结撒花~

おすすめ

転載: blog.csdn.net/Mr_m_jia_bao/article/details/108630619