OnClickListener in dynamic table layout

I want to add onClicklistener to elements from the created dynamic table. My code

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.

+4
source share
1 answer

You need to add the OnClickListner interface to your action, then add the entire dynamic view to setOnClickListner and finally you can catch the click event for the whole view inside onClick (View view) .

try it

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];

}
}
+6
source

Source: https://habr.com/ru/post/1533870/


All Articles