1

プログラムで複数のXMLを追加していますView。レイアウトインフレータを使用して追加していますが、問題はありません。

しかし、私はTextViewそれらのそれぞれで変更することはできません。

たとえばLinearLayout、最後に3回追加するとしViewます。私はTextViewその線形レイアウトにあります。を使用して抽出します。最初のレイアウトに反映されているfindViewById場合setText("hello");は、2番目と3番目のレイアウトには反映されていません。

複数のXML要素を追加するときに、インフレータは動的に新しいIDを作成しますか?

4

1 に答える 1

0

あなたの質問の一部に答えるために、いいえ:IDはによって動的に生成されませんLayoutInflater

ビューを追加すると言うとき、どこに追加しますか?あなたは最終的な見解に言及します。

コードは含まれていませんが、呼び出していると思いますActivity.findViewByIdthis.findViewByIdから呼び出す場合Activityは、ビュー階層全体をトラバースし、そのようなIDを持つ最初のビューを見つけます。

あなたがする必要があるLinearLayoutのは、あなたのを含むすべてのを繰り返し、それぞれをTextView呼び出すfindViewByIdことです。

for (LinearLayout layout : <fill in>) {
    ((TextView) layout.findViewById(R.id.yourid)).setText("hello");
}

<fill in>。あなたのコードなしでそれを記入する方法を言うのは難しいです。これらを親ビューに追加しているようですよね?親がいるとしましょうView parent = some view;

すべての子を取得して反復する必要があります。親のViewのサブクラスに応じて、いくつかの方法があります。シンプルに保ち、親が単なる別のものであると仮定しましょうLinearLayout

その場合、forループは次のように変更されます。

for (int i = 0; i < parent.getChildCount(); i++) {
    final LinearLayout layout = (LinearLayout) parent.getChildAt(i);
    ((TextView) layout.findViewById(R.id.yourid)).setText("hello");
}
于 2013-03-19T03:20:44.667 に答える