2

3 つのネストされたレイアウトがあり、それらのビューにアクセスするのが困難です。以下のメイン xml(A.xml) には、C.xml の複数のインクルードを持つ B の単一インスタンスが含まれています。C.xml には 3 つの画像があります

言う

A.xml -> これはメインの xml です

  <include
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/B" />

B.xml -> これはレベル 2 です

 <include
        android:id="@+id/c1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

    <include
        android:id="@+id/c2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

    <include
        android:id="@+id/c3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

C.xml - これはレベル 3 です

<ImageView
        android:id="@+id/a1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img1" />

    <ImageView
        android:id="@+id/a2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img2" />

    <ImageView
        android:id="@+id/a3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img3" />

したがって、ここでは、main には B の 1 つのインスタンスが含まれ、これには C の複数のインスタンスが含まれます。したがって、B から ID C3 にアクセスし、C3 で a2 を表示したい場合、どうすればよいでしょうか。

4

2 に答える 2

3

以下に例として示すように、各ビューとサブビューの参照を取得することで、すべてのビューにアクセスできます。

        View view = findViewById(R.id.b);
        view = view.findViewById(R.id.c1);
        ((TextView)view.findViewById(R.id.txt1)).setText("Got the First one");

        view = findViewById(R.id.b);
        view = view.findViewById(R.id.c1);
        ((TextView)view.findViewById(R.id.txt2)).setText("Got the Second one");

        view = findViewById(R.id.b);
        view = view.findViewById(R.id.c2);
        ((TextView)view.findViewById(R.id.txt1)).setText("Got the forth one");

同様に、他の要素にもアクセスできます。

于 2012-04-30T12:03:48.900 に答える
0

質問で説明されているものと同様のネストされたレイアウト構造があり、メイン ビューから 1 つまたは 2 つのレベルでネストされたビューを取得する際に問題は発生していません。次のように、アクティビティのコンテンツ ビューを に設定し、アクティビティa.xmlから直接必要なビューを見つけます (第 2 レベルのビューから第 3 レベルのビューを見つける必要はありません)。

@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.a);
  ImageView a1 = (ImageView)findViewById(R.id.a1);
}
于 2012-07-28T14:27:30.770 に答える