Android какая кнопка указатель из массива была нажата - PullRequest
4 голосов
/ 14 марта 2010

Как настроить OnClickListener, чтобы просто сказать мне, какая индексная кнопка была нажата из массива кнопок. Я могу изменить текст и цвет этих кнопок, используя массив. Я настроил их так.

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

до 36.

Ответы [ 2 ]

9 голосов
/ 15 марта 2010

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 голос
/ 29 октября 2014

Вы можете установить значение тега и получить тег при клике:

TButton[1] = (Button)findViewById(R.id.Button01);
TButton[1].setTag(1);


onClick(View v)
{
  if(((Integer)v.getTag())==1)
  {
   //do something
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...