2016-06-18 4 views
0

Я пишу программу, чтобы получить данные (текст) от json и показать ее в виде списка, я пишу код и его работу, но теперь я получаю URL-адрес изображения с json, но я не знаю, как показать изображение в виде списка с точки зрения изображения, пожалуйста, помогите мнеКак показать изображение с json url в android list view

здесь мой код

MainActivity:

public class MainActivity extends ListActivity { 

private ProgressDialog pd; 
JSONParser jParser=new JSONParser(); 
ArrayList<HashMap<String,String>> P; 
JSONArray s=null; 
private final String url="http://192.168.1.4:81/upload/travel.php"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    P = new ArrayList<>(); 
    new travel().execute(); 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    String id_code=((TextView)v.findViewById(R.id.id_code)).getText().toString(); 
    Intent in=new Intent(MainActivity.this,ADD.class); 
    in.putExtra("id",id_code); 
    startActivity(in); 

} 

class travel extends AsyncTask<String,Void,String>{ 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pd=new ProgressDialog(MainActivity.this); 
     pd.setMessage("login"); 
     pd.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     List<NameValuePair> parms=new ArrayList<>(); 
     JSONObject json=jParser.makeHTTPRequest(url,"GET"); 

     try { 
      int t=json.getInt("t"); 
      if(t==1){ 
       s=json.getJSONArray("travel"); 
       for(int i=0;i<s.length();i++){ 
        JSONObject c=s.getJSONObject(i); 
        String id=c.getString("id"); 
        String companyname=c.getString("companyname"); 
        String cod=c.getString("cod"); 
        String bign=c.getString("bign"); 
        String stop=c.getString("stop"); 
        String date=c.getString("date"); 
        String time=c.getString("time"); 
        String price=c.getString("price"); 
        String url_image=c.getString("url_image"); 

        HashMap<String,String>map=new HashMap<String,String>(); 
        map.put("id",id); 
        map.put("companyname",companyname); 
        map.put("cod",cod); 
        map.put("bign",bign); 
        map.put("stop",stop); 
        map.put("date",date); 
        map.put("time",time); 
        map.put("price",price); 
        map.put("url_image",url_image); 

        P.add(map); 

       } 
      }else { 
       Toast.makeText(MainActivity.this,"No Data Found",Toast.LENGTH_SHORT).show(); 
      } 


     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     pd.dismiss(); 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       ListAdapter adapter = new SimpleAdapter(MainActivity.this, P, R.layout.item_list, 
         new String[]{"url_image","companyname", "cod", "bign", "stop", "date", "time", "price"}, 
         new int[]{R.id.id_code,R.id.companyname, R.id.cod, R.id.bign, R.id.stop, R.id.date, R.id.time1, R.id.price}); 


       setListAdapter(adapter); 
      } 
     }); 

    } 

} 

}

+0

вам следует попробовать picasso или glide library – ManishMenaria

ответ

0

показать изображение из URL в использовании ImageView этот класс:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
     ImageView bmImage; 

     public DownloadImageTask(ImageView bmImage) { 
      this.bmImage = bmImage; 
     } 

     protected Bitmap doInBackground(String... urls) { 
      String urldisplay = urls[0]; 
      Bitmap mIcon11 = null; 
      try { 
       InputStream in = new java.net.URL(urldisplay).openStream(); 
       mIcon11 = BitmapFactory.decodeStream(in); 
      } catch (Exception e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return mIcon11; 
     } 

     protected void onPostExecute(Bitmap result) { 
      bmImage.setImageBitmap(result); 
     } 
    } 

Для того, чтобы использовать его просто использовать эту команду в вашем коде:

new DownloadImageTask(imageView).execute(imageLinkURL); 
+0

Мне следует использовать этот код "new DownloadImageTask (imageView) .execute (imageLinkURL); "в функции oncreate это правильно? – alireza

+0

нет, после того как вы получите URL-адрес изображения, используйте его, вставьте изображениеПросмотра места, в котором вы хотите, чтобы изображение было показано, и URL-адрес, который вы получили в ходе выполнения. Он будет асинхронно загружать изображение от url, и когда это будет сделано, он покажет его на изображении. –

+0

Я использую мое изображение, но его покажу мне ошибку, мой код => новый DownloadImageTask (R.id.imageView) .execute (url); – alireza

1

я хотел бы предложить вам использовать лучшую библиотеку для загрузки изображений АСИНХРОННЫЙ PICASSO LIBRARY LINK

Теперь вы должны написать код

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);