如何管理多个按钮?

时间:2018-12-18 12:26:07

标签: android onclicklistener

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

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

我想做的是创建一个“小时”类,该类具有按钮和字符串(描述)作为属性,然后创建它们的数组,但是我该如何将每个按钮映射到该数组的条目动态而无需硬编码?

谢谢!

3 个答案:

答案 0 :(得分:0)

我认为您可以尝试创建两个ArrayList<>实例,一个实例用于Button,另一个实例用于String描述。然后,您可以为每个循环使用这些ArrayList中的相同位置。

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
 }

答案 1 :(得分:0)

根据描述大小在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);
            }

答案 2 :(得分:0)

实现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 ... 
      }

}

最简单的方法。