1

私は Android 用の Java を学習しようとしていますが、これを Google で検索する方法さえわかりません。R.id.variable や R.drawable.variable などの末尾に数値をプログラム可能にアタッチする方法があるかどうか疑問に思っていましたか?

基本的に、image1、image2、image3 などのラベルが付いた画像がいくつかあります。別の変数に基づいて ImageView ドローアブルを更新したいと考えています。したがって、渡された変数が「1」の場合、ビューは「image1」に更新されます。"2" だと "image2" などを更新しますが、更新を呼び出すときに "R.drawable.image" に "1" を付ける方法があるかどうかはわかりません。

これを行うための最良の方法は何ですか?

4

4 に答える 4

3

たぶん助けてください:

画像: image1.png、image2.png、....、imageN.png

あなたは彼らのIDを見つけることができます:

getResources().getIdentifier("IMAGE_NAME", "drawable", context.getPackageName())

そう:

 int idImage1 = getResources().getIdentifier("image1", "drawable", context.getPackageName())
 int idImage2 = getResources().getIdentifier("image2", "drawable", context.getPackageName())
  .....
 int idImageN = getResources().getIdentifier("imageN", "drawable", context.getPackageName())
于 2012-03-15T17:04:16.923 に答える
0

動的な名前でリソースを取得するには、getIdentifier()を使用します。その関数は文字列を受け取り、その名前でリソースの ID を返します

これは私のコードの例です。ここでは、「ru​​n_任意の整数_summary」という名前の文字列リソースのリソース ID を取得します。

getResources().getIdentifier(
            String.format("run_%d_summary", mSelectedRun),
            "string", 
            getPackageName()
            );

あなたがしていることを行うためのより良い方法があるかもしれませんが、Android に精通している人々にそれを説明させてください...

于 2012-03-15T17:08:17.923 に答える
0

あなたが話しているのはReflectionと呼ばれます。少し面倒になる可能性があるため、説明している状況では、画像を配列またはリストに入れ、引数をインデックスとして使用してそれらを取得することをお勧めします。

于 2012-03-15T17:02:47.337 に答える
0

配列を使用してください!もちろん、必要なデータ構造を使用することもできます。List (具体的には ArrayList) を使用すると、コレクション API をさらに使用できるようになる場合があります。または、画像を名前で参照したい場合は、マップを使用できます。

Image[] myImages = new Image[n];
//populate images e.g. myImages[0] = new Image();

void updateImage(int imageNo) {
    Image i = myImages[imageNp]; //arrays start at 0 not 1
    //do stuff to i
}
于 2012-03-15T17:02:49.453 に答える