如何设置OnClickListener来简单地告诉我从一组按钮中按下了哪个索引按钮。我可以使用数组更改这些按钮的文本和颜色。我这样设置它们。
TButton[1] = (Button)findViewById(R.id.Button01);
TButton[2] = (Button)findViewById(R.id.Button02);
TButton[3] = (Button)findViewById(R.id.Button03);
最多36。
答案 0 :(得分:9)
OnClickListener将接收按钮本身,例如R.id.Button01。它不会让你回到数组索引,因为它对如何引用存储在数组中的所有按钮一无所知。
您可以直接使用传递到onClickListener的按钮,而不需要在数组中进行额外的查找。如:
void onClick(View v)
{
Button clickedButton = (Button) v;
// do what I need to do when a button is clicked here...
switch (clickedButton.getId())
{
case R.id.Button01:
// do something
break;
case R.id.Button01:
// do something
break;
}
}
如果你真的找到了点击按钮的数组索引,那么你可以这样做:
void onClick(View v)
{
int index = 0;
for (int i = 0; i < buttonArray.length; i++)
{
if (buttonArray[i].getId() == v.getId())
{
index = i;
break;
}
}
// index is now the array index of the button that was clicked
}
但这似乎是解决这个问题的最低效方式。也许如果您在OnClickListener中提供了有关您要完成的更多信息,我可以为您提供更多帮助。
答案 1 :(得分:1)
您可以设置标记值并在点击时获取标记:
TButton[1] = (Button)findViewById(R.id.Button01);
TButton[1].setTag(1);
onClick(View v)
{
if(((Integer)v.getTag())==1)
{
//do something
}
}