0

したがって、3 つのテキスト ビューを持つ LinearLayout である XML layout1 があります。ScrollView とその中に LinearLayout を含む別の XML layout2 もあります。この for ループを使用して、ScrollView の LinearLayout 内にいくつかの layout2 を作成しています。正常に動作していますが、for ループ内で各 TextView のテキストを設定できるようにしたいと考えています。XML ファイル内で 1 つの ID しか設定できないため、これらの TextView にアクセスする方法がわかりません。for ループ内で ID にアクセスしようとしても問題は発生しませんか?

private void setUpResults() {
        for (int i = 1; i < totalQuestions; i++) {
            parent.addView(LayoutInflater.from(getBaseContext()).inflate(
                    R.layout.result_block, null));

        }
    }

result_block xml ファイル (layout1) は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/layoutSelectedAnswer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:orientation="horizontal"
        android:paddingBottom="@dimen/option_padding_bottom"
        android:paddingTop="@dimen/option_padding_top" >

        <TextView
            android:id="@+id/tvOptionALabel2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:text="@string/option_a"
            android:textColor="@color/white"
            android:textSize="@dimen/option_text_size" />

        <TextView
            android:id="@+id/tvSelectedAnswer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:text="@string/option"
            android:textColor="@color/white"
            android:textSize="@dimen/option_text_size" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layoutCorrectAnswer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:orientation="horizontal"
        android:paddingBottom="@dimen/option_padding_bottom"
        android:paddingTop="@dimen/option_padding_top" >

        <TextView
            android:id="@+id/tvOptionBLabel2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:text="@string/option_b"
            android:textColor="@color/white"
            android:textSize="@dimen/option_text_size" />

        <TextView
            android:id="@+id/tvCorrectAnswer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:text="@string/option"
            android:textColor="@color/white"
            android:textSize="@dimen/option_text_size" />
    </LinearLayout>

</LinearLayout>

id が tvCorrectAnswer の TextView を各ループで異なる String 値に設定したいとしましょう。どのようにアクセスすればよいでしょうか?

4

2 に答える 2

0

ViewGroup にすべてのビューを追加したらViewGroup.getChildAt(int)、挿入したビューの 1 つを取得するために使用できます。ビューの 1 つを取得すると、その内部ビューにアクセスできます。このようなもの。

for(int i = 0; i < parentView.getChildCount();++i) {
  View v = parentView.getChildAt(i);
  Textview tv = (TextView) v.findViewById(R.id.tvOptionALabel2);
  //And so on...
}
于 2013-06-26T17:15:54.490 に答える