TableLayout を使用してデータ グリッドを表示する独自の複合コントロールを作成し、それにバインドされているオブジェクトの配列に応じてループ内にプログラムで Tablerows を追加しました。方法。では、データを取得する特定の行を選択してメソッドを委任するにはどうすればよいでしょうか?
質問する
16285 次
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 に答える