Implementing OnClickListener for dynamically created buttons in Android

android, android-layout, android-widget

Solution

See the code below:

for(int i=0;i<nob;i++) {
    Button btn = new Button(this);
    btn.setId(i+1);
    btn.setText("Button"+(i+1));
    btn.setLayoutParams(lprams);
    final int index = i;
    btn.setOnClickListener(new OnClickListener() {
        void onClick(View v) {
            Log.i("TAG", "The index is" + index);
        }
    });
    dynamicview.addView(btn);
}

My example is pretty simple, but demonstrates how you can get the button index into the `OnClickListeber`. You can access any `final` field in the declared anonymous classes (e..g the `OnClickListener`).

Problem

I dynamically created buttons through code rather than from XML. The code is as below : ``` dynamicview = (LinearLayout)findViewById(R.id.llayout); LinearLayout.LayoutParams lprams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); for(int i=0;i<nob;i++){ Button btn = new Button(this); btn.setId(i+1); btn.setText("Button"+(i+1)); btn.setLayoutParams(lprams); dynamicview.addView(btn); } ``` I am not finding a way in which I can implement OnClickListener to each of these buttons so that I can perform action based on the reference I get. Can anyone help me in sorting out this issue. ? Thanks in Advance,

Original source