2017-01-06 11 views
0

整数配列でR.drawable.imgを取るときと同じように、整数配列で画像を撮りたい。サーバから画像を取得し、Androidでint配列に設定する

例えば:int[] images = {R.drawable.a , R.drawable.b , R.drawable.c , R.drawable.d};

サーバーから画像を撮るとき、私はこのように同じ欲しいです。アレイの

宣言:

    String images[] = new String[1000]; 

は、サーバからイメージを取得し、起きていない配列をintにそれを設定します。

  public void onResponse(String response) { 
      Log.d("TAG", "Message Response: " + response.toString()); 
      hideDialog(); 

      try { 
       JSONObject jsonObj = new JSONObject(response); 
       boolean error = false; 
       p = jsonObj.getJSONArray("response"); 

       for (int i = 0 ; i < p.length(); i++) { 

        JSONObject c = p.getJSONObject(i); 
        String profilepicture = c.getString("profile_picture"); 

        byte[] decodedString = Base64.decode(profilepicture, Base64.DEFAULT); 
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 


        Drawable drawable = new BitmapDrawable(getResources(),decodedByte); 

        images[i] = drawable; 

} 

描画可能な値は[email protected]です。しかし、整数配列は設定されません。

+0

ImageViewでdrawableを表示することを究極の目標とする場合は、PiccasoまたはAndroid-Universal-Image-Loaderを使用してください。 urlの配列を作成し、このライブラリにurlを渡すと、このライブラリは画像のダウンロードと表示の部分を処理します。また、イメージキャッシュを提供します。 –

答えて

2

あなたはDrawableを取得しています。 Drawableを整数配列またはString配列に保存することはできません。Drawable配列にする必要があります。このアプローチは、実際にはあなたの画像をすべてメモリに保存していることを推奨していません。メモリが大量に必要になります。それが自明でない場合は、おそらくOOM例外が発生します。そのため、これらのイメージをBase64でエンコードされた文字列として送信することはお勧めしません。より良い方法は、サーバーがダウンロードするイメージのURLを送信し、必要なときだけダウンロードすることです。

+0

ありがとう。素晴らしい仕事。 –

1

描画可能な配列を作成すると動作し、整数インデックスを使用してその配列からイメージを取得できます。あなたがしようとしているのは、コード番号をBitmapDrawable @ 269a3b6dから取得したことでしょうか?右?これは、整数ではなく、メモリー内のオブジェクトへの参照です。整数配列に入れないでください。 あなたの配列タイプを描画可能にするか、シナリオを変更してください!

関連する問題