代码之家  ›  专栏  ›  技术社区  ›  Maxcot

每个类都必须有自己的OnClickListener吗?

  •  0
  • Maxcot  · 技术社区  · 7 年前

    这里的Android初学者总数。。。

    我有一个带有OnClick侦听器的活动,如本例所示: Multiple Buttons `OnClickListener()` android

    现在我在另一个活动中的浮动动作按钮上设置一个侦听器。我不确定的是,是否可以使用同一个侦听器,还是每个类都必须有自己的侦听器?

    ACTIVITY #1 // a regular activity
    public class Requests extends AppCompatActivity implements View.OnClickListener {...}
    
    ACTIVITY #2 // A RecyclerView, CardView type activity
    public static class MyViewHolder extends RecyclerView.ViewHolder {...}
    

    我真的希望有一个监听器来处理cardview点击事件,以及浮动动作按钮。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Pynnie    7 年前

    通常,您可以对多个按钮使用同一个侦听器。如果它们在不同的活动中,您可以编写一个单独的类来实现视图。OnClickListener。这样地:

    public class MyButtonListener implements View.OnClickListener {
    
    @Override
    public void onClick(View v) {
      switch (v.getId()) {
    
        case R.id.oneButton:
            // do your code
            break;
    
        case R.id.twoButton:
            // do your code
            break;
    
        case R.id.threeButton:
            // do your code
            break;// default method for handling onClick Events..
    }
    

    }

    然后你只需将按钮侦听器设置为 button.setOnClicklistener(new MyOnClickListener());

    如果你的按钮都在做相同的动作,你就不需要开关盒了。

    创建一个单独的监听器类并不是一个坏主意,但是:您应该尝试为每个活动实现一个监听器类,以便对您的按钮操作进行概述。

        2
  •  0
  •   Kaushik    7 年前

    你可以使用下面链接中提到的代码snipet

    Handle click item in Recycleview

    在这种onClick和onItemClick覆盖监听器中,您可以实现浮动动作按钮和cardview点击事件

        3
  •  0
  •   Seema    7 年前

    要对不同视图或视图组的click事件执行相同的操作,请为OnClickListener实现一个匿名类,如下所示:

    View.OnClickListener mOnClickListener= new View.OnClickListener() {  
     @Override public void onClick(View v) {    /*do your code */ }};   
    

    或者在活动中称其为

     mbutton.setOnClickListener(mOnClickListener);   
        mcardView.setOnClickListener(mOnClickListener);