4

私の Android アプリケーションで、ID の一部として変数を使用してテキストをテキストビューに設定する方法はありますか?

私はこのようなことをしようとしています:

for (int i = 1; i < 6; i++){
                views.setTextViewText(R.id.textView+i, "" + realtimeData.get(i).id);
            }

レイアウト xml で textView1、textView2 などとして宣言されている TextViews があり、静的な名前でそれらにアクセスできます。私の問題は、リストに含まれるオブジェクトの数がわからないことです。5 個以上は表示したくありませんが、5 個未満の場合は、TextView の値を空白のままにしても問題ありません。

4

4 に答える 4

7

メソッドを探していますgetIdentifier()

for (int i = 1; i < 6; i++){
     views.setTextViewText(getResources().getIdentifier("textView" + i, "id", getPackageName()), "" + realtimeData.get(i).id);
}
于 2012-11-11T15:52:19.297 に答える
2

+1 Luksprog 、ただし、「i<6」は正しい方法ではないと感じています。代わりに使用ViewGroup.getChildCount() and ViewGroup.getChildAt(int)して、テキストビューの量をより適切に制御できるようにします。

于 2012-11-11T15:55:36.990 に答える
-1

IDが連続していることを確認するためにRファイルを太ももで制御している場合は、次のようなことを試すことができます。

for (int i = R.id.firstTextView; i <= R.id.lastTextView; i++){
    views.setTextViewText(i, "" + realtimeData.get(i).id);
}

これにより、ハードコードされた番号を変更するためにコードを変更する必要なく、R ファイルに ID を追加するだけで済みます6

私の主張を証明するために:

<TextView android:id="@+id/testStart" />
<TextView android:id="@+id/test2" />
<TextView android:id="@+id/test3" />
<TextView android:id="@+id/testEnd" />
<Button android:id="@+id/button1" />

生成:

    public static final int button1=0x7f070004;
    public static final int menu_settings=0x7f070005;
    public static final int test2=0x7f070001;
    public static final int test3=0x7f070002;
    public static final int testEnd=0x7f070003;
    public static final int testStart=0x7f070000;

後の段階で追加:

 <TextView android:id="@+id/test4" />

直前

    <TextView android:id="@+id/testEnd" />

すぐに R.java を次のように変更します。

    public static final int button1=0x7f070005;
    public static final int menu_settings=0x7f070006;
    public static final int test2=0x7f070001;
    public static final int test3=0x7f070002;
    public static final int test4=0x7f070003;
    public static final int testEnd=0x7f070004;
    public static final int testStart=0x7f070000;
于 2012-11-11T15:52:52.050 に答える