TableRowのプログラムで子供(TextView)を選択できません
-
28-09-2019 - |
質問
Tablerows内にあるTextViewsの値を印刷しようとしています。 TableLayout#getChildAt(i).getChildAt(j)
.
上記を使用してログを記録しようとすると、LogCatはビューオブジェクトであり、使用しようとしている方法がないと文句を言います(getText()
).
テーブルの唯一のビューはTextViewsです。
// List<TextView> textViewBoxes...
private void createViews() {
...
tblLayout = new TableLayout(this);
tblRow01 = new TableRow(this);
...
for (int i = 0; i < 99; i++) {
TextView text = new TextView(this);
text.setText("Player " + i);
textViewBoxes.add(text);
}
tblRow01.addView(textViewBoxes.get(0));
...
tblLayout.addView(tblRow01);
...
// Print the contents of the first row's first TextView
Log.d(TAG, ("row1_tv1: " +
tblLayout.getChildAt(0).getChildAt(0).getText().toString));
...
}
解決
このようなことを試しましたか?
TableRow row = (TableRow)tblLayout.getChildAt(0);
TextView textView = (TextView)row.getChildAt(XXX);
// blah blah textView.getText();
あなたはまた1行でそれを行うことができますが、それは 時折 醜く見えます:
// wtf?
((TextView)((TableRow)tblLayout.getChildAt(0)).getChildAt(XXX)).getText();
とにかく...あなたがここでしていることは、あなたが望む特定のタイプのビューをキャストすることです。あなたはそれぞれを完全に確信しているので、あなたは問題なくそれをすることができます TableLayout's
子供はaです TableRow
, 、そしてあなたはそれを知っています TableRow's
xxxの位置にある子供はaです TextView
.
所属していません StackOverflow