How to pass parameters to OnClickListener? How to pass parameters to OnClickListener? android android

How to pass parameters to OnClickListener?


Use your own custom OnClickListener

public class MyLovelyOnClickListener implements OnClickListener   {     int myLovelyVariable;     public MyLovelyOnClickListener(int myLovelyVariable) {          this.myLovelyVariable = myLovelyVariable;     }     @Override     public void onClick(View v)     {         //read your lovely variable     }  };


Another solution for that issue, you can create a regular method and pass to it the View you want to add the onClickListener to it, and pass the parameters you want to use along with it:

Button b1 = new Button();String something = "something";Button b2 = new Button();String anotherSomething = "anotherSomething";setOnClick(b1, something);setOnClick(b2, anotherSomething);private void setOnClick(final Button btn, final String str){    btn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                  // Do whatever you want(str can be used here)           }    });}


I know this is a late answer but hopefully it can help someone. None of the existing answers worked in my situation but I ended up using the setTag feature of an image that was acting like a button. My account info was in a global member variable that was set up when the activity started.

In this case I am setting up a table with each row being an account. The account details are shown when the image is clicked (the image is just an info icon).
Thus:

// prior code....// NOTE: oneAccount is an object (AccountInfo) holding information about the account// column with the "detail" arrowimage1 = new ImageView(this);image1.setImageResource(R.drawable.info);image1.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));image1.setPadding(15, 1, 15, 1);image1.setTag(oneAccount);// add a listener to go to that account detail on a clickimage1.setOnClickListener(new TextView.OnClickListener() {    public void onClick(View v) {    // change the color to signify a click    v.setBackgroundColor(getResources().getColor(R.color.button_selected));    // get what we need out of the tag    AccountInfo thisAcct = (AccountInfo) v.getTag();        // your code would do other stuff here}});// add the image to the table rowtr1.addView(image1);