Ivan
Ivan

Reputation: 191

How can I get button name, inside onClick method

How to get text pressed button, inside onClick method. I can't use variable, cause it will change.

  Button[] mButtonsArray = new Button[MyArrayList.size()];
        for (Button b : mButtonsArray) 
        {
b = new Button(this);
            b.setText("name");
            b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            MyClass.MyMethod(ButtonName);
                        }
                });
}

Upvotes: 1

Views: 12036

Answers (7)

Nermeen
Nermeen

Reputation: 15973

You can use setTag and getTag...

Button[] mButtonsArray = new Button[MyArrayList.size()];
    for (Button b : mButtonsArray) 
    {
b = new Button(this);
        b.setText("name");
        b.setTag("name");
        b.setOnClickListener(
                new OnClickListener() 
                {
                    @Override
                    public void onClick(View arg0) 
                    {
                        MyClass.MyMethod((String)arg0.getTag());
                    }
            });
}

Upvotes: 1

Raj
Raj

Reputation: 1872

you can get by using getText() on arg0 by convering it to button type like below.

   b.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) 
 {
  Button btn = (Button)arg0;
  if(btn != null)
MyClass.MyMethod(btn.getText());
  }

});

Upvotes: 0

Mahesh
Mahesh

Reputation: 2892

Just use this code:

Button[] mButtonsArray = new Button[MyArrayList.size()];
        for (Button b : mButtonsArray) 
        {
b = new Button(this);
            b.setText("name");
            b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            Button b=(Button)arg0;
                            name=b.getText();
                        }
                });
}

Upvotes: 0

belyjz
belyjz

Reputation: 187

b.setOnClickListener(
         new OnClickListener() {
              @Override
              public void onClick(View arg0) {
                   String name = ((Button) arg0).getText().toString();
              }
});

Upvotes: 0

Rajitha Siriwardena
Rajitha Siriwardena

Reputation: 2759

use this inside the onclick method.

((Button) arg0).getText().toString();

Upvotes: 4

Lalit Poptani
Lalit Poptani

Reputation: 67296

You can just use setTag() and getTag() here,

b.setTag("name");

And to fetch it use,

  b.setOnClickListener(
     new OnClickListener() 
    {
       @Override
        public void onClick(View arg0) 
        {
            String name = (String)arg0.getTag();
        }
    });

Upvotes: 1

MysticMagicϡ
MysticMagicϡ

Reputation: 28823

Why don't you just use

b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            MyClass.MyMethod(((Button) arg0).getText().toString());
                        }
                });

It will be simple that way.

Upvotes: 1

Related Questions