我是Android开发的新手,请多多包涵。我正在尝试实现一个日程安排器,该日程安排器具有代表一天中每个小时的24个按钮。单击按钮时,应该会出现一个新的“活动”,您可以在其中键入该小时的计划计划和/或更改按钮的颜色。
我的问题是,我应该如何实现点击侦听器,这样我就不必为每个按钮编写单独的按钮?如何将每个按钮链接到说明?
我想做的是创建一个“小时”类,该类具有按钮和字符串(描述)作为属性,然后创建它们的数组,但是我该如何将每个按钮映射到该数组的条目动态而无需硬编码?
谢谢!
答案 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 ...
}
}
最简单的方法。