2016-06-21 1 views
-1

Mein JSON-Array enthält zwei Bilder, wie man das in Aktivität anzeigt? Diese Bilder haben die Form einer URL. Nach und vor sind die Bildansichten, ich möchte wissen, was Bild-Download-Aufgabe ist und wie kann ich das verwenden.Mein JSON-Array enthält zwei Bilder, Wie man das über URL/HTTP herunterlädt und in Aktivität anzeigt

after = (ImageView) findViewById(R.id.bfrdoogret); 
    before = (ImageView) findViewById(R.id.afterdogret); 
} 

    class BackGround extends AsyncTask<String, String, String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dialog = ProgressDialog.show(Serialno.this, "", 
       "Searching. Please wait...", true); 
     dialog.setCancelable(true); 
     dialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) 
    { 
     String values=getvalues(); 
     return values; 
    } 



    @Override 
    protected void onPostExecute(String s) 
    { 
     dialog.hide(); 
     Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show(); 
     dis.setText(district); 
     city.setText(cit); 
     serialno.setText(serial_no); 
     gender.setText(gende); 

     loction.setText(latitude+ longitude); 


    } 
} 

public String getvalues() 
{ 
    String uri = "http://www.lorryguru.com/domains/dogs/retusingsno.php?district="+District+"&serialno="+SerialNo; 
    HttpGet httpGet = new HttpGet(uri); 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response; 
    StringBuilder stringBuilder = new StringBuilder(); 

    try { 
     response = client.execute(httpGet); 
     HttpEntity entity = response.getEntity(); 
     InputStream stream = entity.getContent(); 
     int b; 
     while ((b = stream.read()) != -1) 
     { 
      stringBuilder.append((char) b); 
     } 
    } 
    catch (ClientProtocolException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    try 
    { 
     JSONArray arr = new JSONArray(stringBuilder.toString()); 
     //result = jsonObj.getJSONArray(TAG_RESULT); 
     JSONObject c = arr.getJSONObject(0); 
     id = c.getString(TAG_ID); 
     district = c.getString(TAG_DISTRICT); 
     cit = c.getString(TAG_CITY); 
     serial_no = c.getString(TAG_SERIALNO); 
     gende = c.getString(TAG_GENDER); 
     wareno = c.getString(TAG_WARENO); 
     befor = c.getString(TAG_BEFORE); 
     afte = c.getString(TAG_AFTER); 
     latitude = c.getString(TAG_LATITUDE); 
     longitude = c.getString(TAG_LONGITUDE); 
     return "success"; 
    } 
    catch (JSONException e) 
    { 
     return "accessproblem"; 
     //e.printStackTrace(); 
    } 
+0

tun Sie es herunterladen möchten oder es gerade von URL zeigen Imageview – Abhishek

+0

viele offene Bibliotheken Es gibt, die Sie durch url/http, wie Universal Bild Loader, glite und Piccaso herunterladen und Anzeigebild unterstützen. – sonngaytho

+0

_oder einfach eine andere HTTP-Anfrage zum Download-Stream und Dekodieren in Bitmap .. –

Antwort

0

Sie haben eine andere Asynchron-Aufgabe hinzufügen, nachdem auf ein vorhandenes, wird Code unten folgen.

class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> 
{ 
    private final WeakReference<ImageView> imageViewReference; 
    String murl; 
    ImageView showView; 
    public ImageDownloaderTask(ImageView imageView,String url) { 
     imageViewReference = new WeakReference<ImageView>(imageView); 
     murl=url; 
     showView=imageView; 
    } 

    @Override 
    protected Bitmap doInBackground(String... params) { 
     final Bitmap bitmap=downloadBitmap(murl); 
     if(murl!=null && bitmap!=null) 
     { 
      addBitmapToMemoryCache(murl, bitmap); 
     } 
     return bitmap; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    protected void onPostExecute(Bitmap bitmap) { 
     if (isCancelled()) { 
      bitmap = null; 
     } 

     if (imageViewReference != null) { 
      final ImageView imageView = imageViewReference.get(); 
      if (imageView != null) { 

       if (bitmap != null) { 
        imageView.setImageBitmap(bitmap); 
        //addBitmapToMemoryCache(murl, bitmap); 
       } 

      } 

     } 
    } 
} 

private Bitmap downloadBitmap(String url) 
{ 
    HttpURLConnection urlConnection = null; 
    Bitmap bitmap; 
    try { 
     URL uri = new URL(url); 
     urlConnection = (HttpURLConnection) uri.openConnection(); 
     int statusCode = urlConnection.getResponseCode(); 
     if (statusCode != HttpStatus.SC_OK) 
     { 
      return null; 
     } 
     InputStream inputStream = urlConnection.getInputStream(); 

     bitmap = BitmapFactory.decodeStream(inputStream); 


     return bitmap; 
    } 

    catch (Exception e) 
    { 
     urlConnection.disconnect(); 
     Log.w("ImageDownloader", "Error downloading image from " + url); 
    } 
    finally 
    { 
     if (urlConnection != null) { 
      urlConnection.disconnect(); 
     } 
    } 
    return null; 
} 
+0

funktioniert gut, aber ein bisschen großen Code. –

0

Verwenden Sie Picasso, um Bild asynchron von der URL herunterzuladen.

0

Sie können Picasso verwenden:

Picasso.with(this) 
     .load(url) 
     .into(imageView); 
1

Fügen Sie diese Abhängigkeit in gradle compile 'com.squareup.picasso:picasso:2.5.2'

As per your getValues() method you will get url like this 

String yourImageUrlHere= c.getString("whatever is your key"); 

Picasso.with(this) 
.load(yourImageUrlHere) 
.into(yourImageViewHere); 
+0

Wir müssen das in postexecute oder was? –

+1

Holen Sie sich URL in doInbackground-Methode und verwenden Sie Picasso in postExecute-Methode – Abhishek

Verwandte Themen