2016-12-12 6 views
1

Ich versuche, ein Bild in ein ImageView mit der Volley-Bibliothek herunterzuladen.
Ich injiziere die Antwort der Volley-Bibliothek in ImageView, aber ich bekomme nicht das gewünschte Ergebnis.Wie lade ich ein Bild mit Volley herunter?

Bitte überprüfen Sie meinen Code und schlagen Sie vor, wo ich die Änderungen vornehmen kann, um das gewünschte Ergebnis zu erhalten.

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..."); 
      } 
     }); 

    } 
} 

Antwort

4

Sie verwenden den falschen Anfragetyp. Es gibt eine ImageRequest.

Bitte auf diese Dokumentation: 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); 

Oder können Sie NetworkImageView auch Teil Volley nutzen.

jedoch darauf hingewiesen werden, dass Google ihre eigenen Volley veraltet durch Apache Phasing-out, aber es gibt eine temporäre Abhilfe: How to use the legacy Apache HTTP client on Android Marshmallow?

Wie die meisten Menschen wird vorschlagen, wenn Sie können, Update zu Picasso http://square.github.io/picasso/

Verwandte Themen