2

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

4

2 回答 2

11

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

 // 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

于 2012-07-05T03:08:50.287 回答
8

我尝试了 Parth Doshi 的答案,发现它不太正确。in的view参数onClick是 a 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();
    }
});
于 2015-04-02T14:54:29.600 回答