質問

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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top