我在.xml文件中有一个简单的表格布局.我在运行时向它添加组件. 以下是我的代码: public class Home extends Activity{ TextView tv1; int i;TableRow tbrow; String [] names = {"First Name","Last Name", "Title","Comp
以下是我的代码:
public class Home extends Activity{ TextView tv1; int i;TableRow tbrow; String [] names = {"First Name","Last Name", "Title","Company","Phone"}; int [] images = { R.drawable.icon,R.drawable.icon,R.drawable.star2,R.drawable.icon,R.drawable.icon} @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TableLayout ll=(TableLayout) findViewById(R.id.tableLayout1); TableRow trow=new TableRow(this); ImageView Image1=new ImageView(this); ImageView Image2=new ImageView(this); ImageView Image3=new ImageView(this); ImageView Image4=new ImageView(this); tv1=new TextView(this); trow.setClickable(true); Image1.setImageResource(R.drawable.blank); Image2.setImageResource(R.drawable.star2); Image3.setImageResource(R.drawable.blank); Image4.setImageResource(R.drawable.blank); tv1.setText("Brochures"); trow.addView(Image1); trow.addView(tv1); trow.addView(Image2); trow.addView(Image3); trow.addView(Image4); trow.setId(0); ll.addView(trow); for(i=1;i<5;i++){ tbrow=new TableRow(this); ImageView img1=new ImageView(this); tv1=new TextView(this); CheckBox chk=new CheckBox(this); ImageView img2=new ImageView(this); ImageView img3=new ImageView(this); img1.setImageResource(R.drawable.pdf); img2.setImageResource(R.drawable.blank); img3.setImageResource(R.drawable.blank); tv1.setText(""+names[i]); tbrow.addView(img1); tbrow.addView(tv1); tbrow.addView(chk); tbrow.addView(img2); tbrow.addView(img3); tbrow.setId(i); Log.e("TAG", "ID: "+tbrow.getId()); tv1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(Home.this, ""+tbrow.getId(), Toast.LENGTH_SHORT).show(); Log.e("TAG", " clicked ID: "+tbrow.getId()); } }); ll.addView(tbrow); } } }
每当我单击任何行时,都会触发最后一行的onClick()事件.我还试图触发表行的onClick()事件而不是文本视图,但是徒劳无功.
我想知道点击了哪一行. getID(),setID()将无法正常工作.
请帮忙.
改变线tbrow=new TableRow(this);
至
final TableRow tbrow = new TableRow(this);
它会像你期望的那样工作.