如何在TableLayout中单击特定的TableRow

时间:2012-07-04 22:46:14

标签: android xamarin.android tablelayout tablerow

我创建了自己的复合控件,使用TableLayout显示数据网格,并在循环中添加Tablerows,取决于我绑定到它的Object数组,现在我想选择一个特定的行及其特定数据,以便由方法使用。那么如何选择检索其数据的特定行来委托方法呢?

2 个答案:

答案 0 :(得分:9)

嗨,你可以尝试这样的事情,

 // 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();
        }
    });

有关详细信息,请参阅Android TableRow

答案 1 :(得分:7)

我尝试了Parth Doshi的答案,发现它不太正确。 view中的onClick参数是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();
    }
});