【问题标题】:How to manage multiple buttons? [duplicate]如何管理多个按钮? [复制]
【发布时间】:2018-12-18 12:26:06
【问题描述】:

我是 Android 开发的新手,所以请多多包涵。我正在尝试实现一个具有 24 个按钮的日程安排器,这些按钮代表一天中的每个小时。单击按钮时,应该会出现一个新的活动,您可以在其中输入您在该小时内计划的内容和/或更改按钮的颜色。

我的问题是,我应该如何实现点击监听器,这样我就不必为每个按钮编写单独的一个?如何将每个按钮链接到描述?

我想做的是创建一个类“Hour”,它具有一个 Button 和一个 String(描述)作为属性,然后创建一个数组,但是我如何将每个 Button 映射到该数组的一个条目没有硬编码的动态?

【问题讨论】:

标签: android onclicklistener


【解决方案1】:

我认为您可以尝试创建两个ArrayList<> 实例,一个用于按钮,一个用于字符串描述。然后您可以使用 for 每个循环从这些ArrayLists 中获取相同的位置。

ArrayList<Button> buttons = new ArrayList<Button>();
ArrayList<String> descriptions = new ArrayList<String>();

//fill this two arraylists like you want
//try to keep the same position for button and description
//then
for(Buttons b: buttons){
    b.setText(description.get(buttons.indexOf(b));
    //Then make onClickListener for b
 }

【讨论】:

    【解决方案2】:

    在java中根据描述大小动态创建按钮并像这样在布局中添加按钮。

    LinearLayout layout;//nasalize your layout in with findviewbyid
                layout.removeAllViews();
                ArrayList<String> descriptions = new ArrayList<String>();
                //fill this two arraylists like you want
                //try to keep the same position for button and description
                //then
                for(int i=0;i<descriptions.size();i++){
                    Button b=new Button(MainActivity.this);
                    b.setText(descriptions.get(i));
                    b.setId(i);
                    b.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                           switch(b.getId())
                           {
                               case 0:
                                   //hour handel heere
                                   break;
                               case 1:
                                   //next and so on
                                   break;
                           }
                        }
                    });
                   layout.addView(b);
                }
    

    【讨论】:

      【解决方案3】:

      实现 OnClickListener 接口并重写其 onClick 方法,如下所示

      public class MyClass extends AppCompatActivity implements 
      View.OnClickListener {
      
              @Override
             public void onClick(View view) {
      
                 if (view == button1) {
                       //Code here
                 }else if(view == button2){
                      //Code here 
                 }
                 //and so on ... 
            }
      

      }

      最简单的方法。

      【讨论】:

      • 您需要在 oncreate() 方法中初始化和重新设置按钮
      猜你喜欢
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多