Reputation: 191
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
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
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
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
Reputation: 187
b.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View arg0) {
String name = ((Button) arg0).getText().toString();
}
});
Upvotes: 0
Reputation: 2759
use this inside the onclick method.
((Button) arg0).getText().toString();
Upvotes: 4
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
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