2016-08-28 15 views
0

画像をドロワブルから画像ビューに読み込む必要があります。 ImageViewはListViewItemの一部です。したがって、私は多数のアイテムと多数のイメージを持っています。Androidは、ファイル名のみを使用してdrawableからImageViewに画像をロードします。

読み込み時に、アプリはJSONファイルを解析します。このファイルには、その他の情報の中で、リストアイテムごとに読み込まれるファイル名が記述されています。

たとえば、 "test_a.jpg"

ファイル "test_a.jpg"は "drawable"にあります。

私は、実行時に、その上の描画可能/ test_a.jpg、test_b.jpg、big_chief.jpgとをロードしたい...

int intCurrImageResourceID = this.context.getResources().getIdentifier(strPictureName, "drawable", context.getPackageName()); 

それを達成する方法上の任意のアイデア?

*** EDIT **** ファイル拡張子を使用しないでください。だからimage.jpgは間違っています。イメージは正しい。皆さんありがとう。特に@Augusto Carmo。 "myDogPicture.png":(正解)更新

+0

使用。 –

+0

イメージはDrawableフォルダに存在しますが、サーバーからイメージ名をロードすることはお勧めしません。 –

+0

@BhunnuBaba、私はそれを使うかもしれないが、私のMVPのためにそれをする必要はない。実行時にイメージ名を使用してリソースIDを取得できますか? – dotaneli

答えて

0

----

の質問は、あなたのコードでは、strPictureNameはこのようなものに、例えば、等しいのですか?はいの場合は、最初に文字列から".png"を削除する必要があります。テストする:)リソースIDを持つドロウアブルからイメージを取得するには、イメージ拡張を使用しないでください。

----古い答え

次のコードでこれを達成することができます:あなたはすでに文字列とリソースIDの間のマッピングがどうなるかわかっている場合、あなたはどう思います

// example - your ImageView 
ImageView myImageView = (ImageView)findViewById(R.id.my_image_view); 
// suppose the name of your image in drawable/ is my_image_name.jpg. 
myImageView.setImageResource(R.drawable.my_image_name); 

enumを使って?例:画像の数が大であるときに、画像ビューの画像をロードするためのピカソに

public enum MyImage{ 
     CAT_IMAGE("cat.png", R.drawable.cat), 
     DOG_IMAGE("dog.png", R.drawable.dog), 
     HORSE_IMAGE("horse.png", R.drawable.horse); 

     private final String fileName; 
     private final int resId; 

     MyImage(String fileName, int resId){ 
      this.fileName = fileName; 
      this.resId = resId; 
     } 

     /** 
     * 
     * @param imageFileName 
     * @return -1 if image not found 
     */ 
     public int getResId(String imageFileName){ 
      int resId = -1; 
      for (MyImage myImage : MyImage.values()) { 
       if (imageFileName.equals(myImage.fileName)){ 
        resId = myImage.resId; 
        break; 
       } 
      } 
      return resId; 
     } 
    } 
+0

ありがとうございます。しかし、値を "setImageResource"に送信してR.drawable + strMyImageNameStringVariableToHoldTheActualNameにする必要があります。 setImageResourceが期待するものはリソースIDであり、課題は自分のイメージ名をIDに変換することです。 – dotaneli

+0

私は自分の答えを更新しました –

+0

ありがとう、しかし、それは私の目的のために十分な一般的ではありません。 intCurrImageResourceID = this.context.getResources()。getIdentifier(strPictureName、 "drawable"、context.getPackageName())。 で十分です。 – dotaneli

関連する問題