我想将onClicklistener添加到生成的动态表中的项目中。 我的代码是
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));
}
请帮忙。
答案 0 :(得分:7)
您需要在活动中添加 OnClickListner接口,然后将所有动态视图添加到 setOnClickListner ,最后您可以捕获 onClick内所有视图的点击事件(查看视图)方法。
试试这个
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];
}
}