无法编程地选择Tablerow的孩子(文本视图)
-
28-09-2019 - |
题
我正在尝试打印tablerows内部文本视图的价值, TableLayout#getChildAt(i).getChildAt(j)
.
当我尝试使用上述记录它时,LogCat抱怨说这是一个视图对象,并且没有我尝试使用的方法(getText()
).
Tablerows中唯一的视图是文本视图。
// 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();
您也可以一行做到这一点,但是 有时 看起来很丑:
// wtf?
((TextView)((TableRow)tblLayout.getChildAt(0)).getChildAt(XXX)).getText();
无论如何...您在这里所做的就是将视图抛弃到您想要的特定类型。您可以毫无问题地做到这一点,因为您完全确定每个 TableLayout's
孩子是一个 TableRow
, ,你知道 TableRow's
XXX位置的孩子是 TextView
.
不隶属于 StackOverflow