单击我动态创建的多个按钮的侦听器 Android Studio
Click listener for multiple buttons ive created dynamically Android Studio
好的,我正在制作一个 android 应用程序,并且我有一个目标列表,可以说是为了便于解释。一个目标由一个字符串组成。该数据将来自数据库,因此将来列表的长度可能会稍长或稍短。每个目标都放在一个按钮的文本中。
由于列表的长度会根据之前发生的事情发生变化,因此我已经在 运行 时间创建了这个循环,并且这一切都完美无缺,我可以创建按钮并将它们放置在何处我想要等等。这是我用来执行此操作的代码。
for (int i = 0; i < goals.size(); i++){
buttons[i] = new Button(this.getContext());
buttons[i].setLayoutParams(params);
buttons[i].setPadding(0,150,0,150);
buttons[i].setGravity(Gravity.CENTER);
buttons[i].setText(goals.get(i));
buttons[i].setBackgroundResource(R.drawable.btn_back);
buttons[i].setTextSize(30);
buttons[i].setTransformationMethod(null);
linear.addView(buttons[i]);
}
现在我的问题是我希望每个按钮的点击都做一些稍微不同的事情——这取决于目标,即按钮的文本。我真的很难设置点击事件,这样即使我已经动态创建了所有按钮,不同的按钮也会做不同的事情。
我可以详细说明我在 android 工作室中的设置,但我觉得我已经对我的问题提供了足够的洞察力。
感谢任何帮助。
我最好的猜测是,如果你已经根据文本知道每个按钮的功能,你就不能直接拿按钮的文本,然后在开关(或其他东西)中使用它来获得特定功能,例如:
buttons[i].setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//Put whatever is common between buttons outside of the switch
switch(((Button)view).getText().toString()){
//And then just assign a case for whatever functionality you need specifically for each goal
}
}
});
好的,我正在制作一个 android 应用程序,并且我有一个目标列表,可以说是为了便于解释。一个目标由一个字符串组成。该数据将来自数据库,因此将来列表的长度可能会稍长或稍短。每个目标都放在一个按钮的文本中。
由于列表的长度会根据之前发生的事情发生变化,因此我已经在 运行 时间创建了这个循环,并且这一切都完美无缺,我可以创建按钮并将它们放置在何处我想要等等。这是我用来执行此操作的代码。
for (int i = 0; i < goals.size(); i++){
buttons[i] = new Button(this.getContext());
buttons[i].setLayoutParams(params);
buttons[i].setPadding(0,150,0,150);
buttons[i].setGravity(Gravity.CENTER);
buttons[i].setText(goals.get(i));
buttons[i].setBackgroundResource(R.drawable.btn_back);
buttons[i].setTextSize(30);
buttons[i].setTransformationMethod(null);
linear.addView(buttons[i]);
}
现在我的问题是我希望每个按钮的点击都做一些稍微不同的事情——这取决于目标,即按钮的文本。我真的很难设置点击事件,这样即使我已经动态创建了所有按钮,不同的按钮也会做不同的事情。
我可以详细说明我在 android 工作室中的设置,但我觉得我已经对我的问题提供了足够的洞察力。
感谢任何帮助。
我最好的猜测是,如果你已经根据文本知道每个按钮的功能,你就不能直接拿按钮的文本,然后在开关(或其他东西)中使用它来获得特定功能,例如:
buttons[i].setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//Put whatever is common between buttons outside of the switch
switch(((Button)view).getText().toString()){
//And then just assign a case for whatever functionality you need specifically for each goal
}
}
});