2010-11-02 5 views
1

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

Когда я пытаюсь зарегистрировать его, используя приведенное выше, 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)); 

    ... 
} 

ответ

3

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

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 для конкретного типа вы хотите , Вы можете сделать это без проблем, так как вы абсолютно уверены, что каждый ребенок является TableRow, и вы знаете, что TableRow's детей на XXX позиции TextView.

 Смежные вопросы

  • Нет связанных вопросов^_^