1

我正在尝试打印 TableRows 内的 TextViews 的值,使用TableLayout#getChildAt(i).getChildAt(j).

当我尝试使用上述方法记录它时,logcat 抱怨说它是一个 View 对象并且它没有我尝试使用的方法(getText())。

TableRows 中的唯一视图是 TextView。

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

    ...
}
4

1 回答 1

4

你有没有尝试过这样的事情?

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();

无论如何...您在这里所做的是将 View 转换为您想要的特定类型。您可以毫无问题地做到这一点,因为您完全确定每个TableLayout's孩子都是TableRow,而且您知道TableRow'sXXX 职位上的孩子是TextView

于 2010-11-02T15:39:40.753 回答