[好,所以我正在制作一个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]);
}
现在我的问题是,我希望单击每个按钮可以做些不同的事情-取决于目标,即按钮的文本。我真的很努力地设置click事件,以便即使我动态创建了所有按钮,不同的按钮也将执行不同的操作。
我可以为我在android studio中的设置提供更多详细信息,但我觉得我对问题有足够的了解。
感谢您的帮助。
我最好的猜测是,如果您已经知道每个按钮的功能应根据文本而定,那么您是否不能做类似的事情:
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
}
}
});