user3391804
user3391804

Reputation:

Getting the array position of a array button during onClick

I have an array of button of size probably more than 20-30. My simple question is how to get the array index of the button that have been click? For example, i clicked btnDisplay[8] and then the apps will toast "8". As simple as that. but i don't know how to retrieve the index of the arrayed button.

switch (clickedButton.getId())
{
  case R.id.Button01:
      // do something
      break;

  case R.id.Button01:
      // do something
      break;
}

If i use this code, then i have to wrote like 20-30 cases. would there be a better solution?

How i generate button array

public class MainActivity extends Activity {
Button[] btnUpdate;

public void onCreate(Bundle savedInstanceState) {

//SOME CODE HERE

jsonParser = new JSONParser();
jObj = jsonParser.getJSONFromUrl(URL);

btnUpdate = new Button[jObj.length()];

for(int i=0;i<jObj.length();i++)
{
btnUpdate[i] = new Button(getApplicationContext());
btnUpdate[i].setText("Edit");
btnUpdate[i].setHeight(50);
}

Upvotes: 0

Views: 1354

Answers (3)

Biraj Zalavadia
Biraj Zalavadia

Reputation: 28484

Try this way

for (int i = 0; i < jObj.length(); i++) {
            btnUpdate[i] = new Button(getApplicationContext());
            btnUpdate[i].setText("Edit");
            btnUpdate[i].setHeight(50);
            btnUpdate[i].setTag(i); //ADD THIS LINE.
        }


void onClick(View v) {

        int index = (Integer) v.getTag();
        Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show();

    }

Upvotes: 1

Amresh
Amresh

Reputation: 2108

Try something like this

void onClick(View v)
{
   int index = 0;
   for (int i = 0; i < buttonArray.length; i++)
   {
      if (buttonArray[i].getId() == v.getId())
      {
         index = i;
  Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show();
         break;
      }
   }


}

Upvotes: 0

WickedFAN
WickedFAN

Reputation: 65

Somehow try to use btnDisplay.indexof(); it works in C# I am not sure about Java

Upvotes: 0

Related Questions