OnClickListener on dynamic table layout

Sukan picture Sukan · Mar 28, 2014 · Viewed 9.7k times · Source

I want to add onClicklistener to the items from the dynamic table that is generated. My Code is

for(int k=0;k<i;k++)        
{

    tr[k]=new TableRow(getApplicationContext());
    tr[k].layout(0, 0, 0, 0);
        ids[k] = new TextView(getApplicationContext());
        ids[k].setText(loc_id[k]);
        ids[k].setPadding(30, 15, 30, 15);
        loc[k] = new TextView(getApplicationContext());
        loc[k].setText(loc_name[k]);      
        loc[k].setPadding(30, 15, 30    ,15);
        tr[k].setPadding(0, 1, 0, 0);   
        tr[k].addView(ids[k]);
        tr[k].addView(loc[k]);
      tl.addView(tr[k], new TableLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

}

Please help.

Answer

Chirag Ghori picture Chirag Ghori · Mar 28, 2014

You need to add OnClickListner Interface to your activity and then add all dynamic view to setOnClickListner and finally you can catch click event for all view inside onClick(View view) method.

Try this

public class MainScreen extends Activity implements OnClickListener {

int i = 10; // input no of row

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);  // set here your layout xml name 

    //TableLayout tl = new TableLayout(MainScreen.this);
        TableLayout tl = (TableLayout) findViewById(R.id.table);
    for (int k = 0; k < i; k++) {

        TableRow tr = new TableRow(MainScreen.this);
        tr.layout(0, 0, 0, 0);
        TextView ids = new TextView(MainScreen.this);
        ids.setText(loc_id[k]);
        ids.setPadding(30, 15, 30, 15);
        TextView loc = new TextView(MainScreen.this);
        loc.setText(loc_name[k]);
        loc.setPadding(30, 15, 30, 15);
        tr.setPadding(0, 1, 0, 0);
        tr.addView(ids);
        tr.addView(loc);
        tr.setId(k); // here you can set unique id to TableRow for
                        // identification
        tr.setOnClickListener(MainScreen.this); // set TableRow onClickListner
        tl.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    }

    //setContentView(tl);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    int clicked_id = v.getId(); // here you get id for clicked TableRow

    // now you can get value like this

    String ids = loc_id[clicked_id];
    String loc = loc_name[clicked_id];

}
}