按下了从数组按钮索引的Android

时间:2010-03-14 20:52:25

标签: android arrays button

如何设置OnClickListener来简单地告诉我从一组按钮中按下了哪个索引按钮。我可以使用数组更改这些按钮的文本和颜色。我这样设置它们。

 TButton[1] = (Button)findViewById(R.id.Button01);
 TButton[2] = (Button)findViewById(R.id.Button02);
 TButton[3] = (Button)findViewById(R.id.Button03);

最多36。

2 个答案:

答案 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
  }
}