Android 如何在TableLayout中单击特定的TableRow

Android 如何在TableLayout中单击特定的TableRow,android,xamarin.android,tablelayout,tablerow,Android,Xamarin.android,Tablelayout,Tablerow,我创建了自己的复合控件,该控件使用TableLayout显示数据网格,并根据绑定到它的对象数组以编程方式在循环中添加Tablerows,现在我想选择一个具有特定数据的特定行,以便方法使用。那么,我如何选择检索其数据的特定行来委托方法呢 嗨,你可以试试这样的东西 // create a new TableRow TableRow row = new TableRow(this); row.setClickable(true); //allows you to select a

我创建了自己的复合控件,该控件使用TableLayout显示数据网格,并根据绑定到它的对象数组以编程方式在循环中添加Tablerows,现在我想选择一个具有特定数据的特定行,以便方法使用。那么,我如何选择检索其数据的特定行来委托方法呢

嗨,你可以试试这样的东西

 // create a new TableRow

    TableRow row = new TableRow(this);
    row.setClickable(true);  //allows you to select a specific row

    row.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            v.setBackgroundColor(Color.GRAY);
            System.out.println("Row clicked: " + v.getId());

           //get the data you need
           TableRow tablerow = (TableRow)v.getParent();
           TextView sample = (TextView) tablerow.getChildAt(2);
           String result=sample.getText().toString();
        }
    });

欲了解更多信息,请参考

我尝试了Parth Doshi的答案,发现不太正确。
onClick
中的
view
参数是一个
TableRow
,因此当调用
v.getParent()
时,它返回一个
TableLayout
对象,因此在将其转换为
TableRow
时引发异常。因此,适用于我的代码是:

tableRow.setClickable(true);  //allows you to select a specific row

tableRow.setOnClickListener(new OnClickListener() {
      public void onClick(View view) {
        TableRow tablerow = (TableRow) view; 
        TextView sample = (TextView) tablerow.getChildAt(1);
        String result=sample.getText().toString();

        Toast toast = Toast.makeText(myActivity, result, Toast.LENGTH_LONG);
        toast.show();
    }
});

我也有同样的问题,但我想在TableRow上使用onItemClickListener,因为我想知道按下了哪个列。无法找到将TableRow转换为支持McClick的东西的方法。有什么解决办法吗?谢谢!这肯定比答案中标注的更好