android - 如何获取表格行/表格项的点击事件?

标签 android row android-tablelayout

我在 .xml 文件中有一个简单的表格布局。我在运行时向它添加组件。 以下是我的代码:

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() 事件。除了 TextView ,我还尝试触发表行的 onClick() 事件,但没有成功。

我想知道点击了哪一行。 getID()setID() 将不起作用。

请帮忙。

最佳答案

换行

tbrow=new TableRow(this);

final TableRow tbrow = new TableRow(this);

它会如您所愿地工作。

关于android - 如何获取表格行/表格项的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581870/

相关文章:

java - 我在 Android TextAdventure 开发过程中遇到了一个非常奇怪的崩溃

Android 复杂表格布局

android - 建议 : Implementation of SlidingMenu on Android (J. 范斯坦)

MySQL 查询随机化行,然后自动增量列

opencv - 在 OpenCV 中向矩阵添加一行

Excel vba宏根据单元格整数值多次复制行

android - TableRow 中的 SeekBar 宽度?

Android:发送具有多种 Mimetype 的电子邮件 "HTML & PLAINTEXT"

Android - 在 ListView 中显示来自数据库的游标结果

android - 为什么我会收到 emulator-5554 断开连接的消息