Невозможно программно выбрать детей (textview) таблицы Table - PullRequest
1 голос
/ 02 ноября 2010

Я пытаюсь напечатать значение TextViews, которые находятся внутри TableRows, используя TableLayout#getChildAt(i).getChildAt(j).

Когда я пытаюсь войти в систему, используя описанное выше, logcat жалуется, говоря, что это объект View ичто у него нет метода, который я пытаюсь использовать (getText()).

Единственными представлениями в TableRows являются 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));

    ...
}

1 Ответ

3 голосов
/ 02 ноября 2010

Вы пробовали что-то подобное?

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.

...