2016-12-12 1 views
1

Je tente de télécharger une image dans un ImageView en utilisant la bibliothèque Volley.
J'injecte la réponse de la Volley Library dans ImageView, mais je n'obtiens pas le résultat désiré.Comment télécharger une image en utilisant Volley?

Veuillez vérifier mon code et suggérer où je peux faire les changements pour obtenir le résultat désiré.

public class MainActivity extends AppCompatActivity { 
    Button response_click; 
    TextView text_response; 
    RequestQueue requestQueue; 
    ImageView image_download; 
    String server_url="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Starburst_in_NGC_4449_(captured_by_the_Hubble_Space_Telescope).jpg/1024px-Starburst_in_NGC_4449_(captured_by_the_Hubble_Space_Telescope).jpg"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     response_click=(Button) findViewById(R.id.click_response); 
     text_response=(TextView) findViewById(R.id.text_response); 
     image_download=(ImageView)findViewById(R.id.image_download); 
    } 
    public void response_click(View view){ 
     requestQueue= Volley.newRequestQueue(getApplicationContext()); 
     StringRequest stringRequest=new StringRequest(Request.Method.POST, server_url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       image_download.setImageResource(Integer.parseInt(response)); 


      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       text_response.setText("ou got an error..."); 
      } 
     }); 

    } 
} 

Répondre

4

Vous utilisez le mauvais type de demande. Il y a un ImageRequest.

S'il vous plaît se référer à cette documentation: Volley: Request an Image

ImageView mImageView; 
String url = "http://i.imgur.com/7spzG.png"; 
mImageView = (ImageView) findViewById(R.id.myImage); 
... 

// Retrieves an image specified by the URL, displays it in the UI. 
ImageRequest request = new ImageRequest(url, 
    new Response.Listener<Bitmap>() { 
     @Override 
     public void onResponse(Bitmap bitmap) { 
      mImageView.setImageBitmap(bitmap); 
     } 
    }, 0, 0, null, 
    new Response.ErrorListener() { 
     public void onErrorResponse(VolleyError error) { 
      mImageView.setImageResource(R.drawable.image_load_error); 
     } 
    }); 
// Access the RequestQueue through your singleton class. 
MySingleton.getInstance(this).addToRequestQueue(request); 

Ou vous pouvez utiliser NetworkImageView, également partie de Volley.

Cependant, sachez que Google a désapprouvée leur propre Volley en éliminant progressivement Apache, mais il existe une solution temporaire: How to use the legacy Apache HTTP client on Android Marshmallow?

Comme la plupart des gens suggéreront, si vous le pouvez, mettez à jour Picasso http://square.github.io/picasso/