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 の答えを試してみましたが、まったく正しくないことがわかりました。の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();
    }
});
于 2015-04-02T14:54:29.600 に答える