Visualizzazione dell'image bitmap in imageview tramite semplice adattatore

Sto ottenendo l'image da un url. Sto usando immagini in listview. Voglio aggiungere l'elenco delle immagini bitmap nella row della voce di elenco. Ho usato SimpleAdapter, ma l'image visualizza blank.My codice è sotto !!

ArrayList<HashMap<String, Bitmap>> mylist = new ArrayList<HashMap<String, Bitmap>>(); Bundle bundle = this.getIntent().getExtras(); get = bundle.getString("name"); try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.propertyhookup.com/mobile/propertylist.php"); nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("zipcode", get.trim())); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } //convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } if(result.length()<= 7){ Toast.makeText(getApplicationContext(), "No properties for this zipcode or check your zipcode ", Toast.LENGTH_LONG).show(); //text.setText("No properties for this zipcode or check your zipcode"); } else{ try{ jArray = new JSONObject(result); }catch(JSONException e){ Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } //JSONObject json = JSONfunctions.getJSONfromURL("http://192.168.1.111/propertyhookup.com/mobile/propertylist.php"); try{ JSONArray earthquakes = jArray.getJSONArray("earthquakes"); for(int i=0;i<10;i++){ map = new HashMap<String, Bitmap>(); //HashMap<String, Drawable> map1 = new HashMap<String, Drawable>(); JSONObject e = earthquakes.getJSONObject(i); if(e.getString("property_type").contains("1")) { proptype ="Single Family Home"; }else if(e.getString("property_type").contains("2")) { proptype="Condo"; }else if(e.getString("property_type").contains("3")) { proptype="Townhouse"; } if(e.getString("estimated_price").contains("0")) { estimate = "Not Enough Market Value"; //estimat = (TextView) findViewById(R.id.estimat); //estimat.setTextColor(Color.rgb(0, 0, 23)); }else { estimate = "$"+e.getString("estimated_price"); } photo = e.getString("photo1"); drawable = LoadImageFromWebOperations(photo); //text.setImageDrawable(d); try { aURL = new URL(photo); } catch (MalformsdURLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } URLConnection conn = null; try { conn = aURL.openConnection(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { conn.connect(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } InputStream is = null; try { is = conn.getInputStream(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } BufferedInputStream bis = new BufferedInputStream(is,8*1024); Bitmap bm = BitmapFactory.decodeStream(bis); map.put(photos, bm); mylist.add(map); } }catch(JSONException e) { Toast.makeText(getApplicationContext(),e.getMessage(), Toast.LENGTH_LONG).show(); } SimpleAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main4, new String[] { "percent","propertyid", "cityname", "statecode", "propertytype", "footage", "bathroom", "bedroom", "price", "estimated", "photos" }, new int[] { R.id.percent, R.id.property_id, R.id.city_name, R.id.state_code, R.id.prop_type, R.id.foot, R.id.bath, R.id.bed, R.id.list, R.id.estimat, R.id.image}); setListAdapter(adapter); 

  • Android: Controllare se il telefono è double SIM
  • Sync di Gradley di progetto di Android Wear non riesce
  • Android: ridimensionamento di immagini in XML
  • KSOAP non ha mai timeout
  • Filtro elenco elenco Android
  • biblioteca "libmaliinstr.so" non trovata ... in eclipse
  • Con SAX Parser, ottieni il valore di un attributo
  • Progressbar android con text all'interno
  • Come posso memorizzare un valore BigDecimal (Java) in una colonna Real (SQlite)?
  • Android / iOS OpenCV Dilation Dilation Eye
  • come scorrere l'elenco di listview con l'elemento
  • Android: cosa fa il metodo "setTextFilterEnabled"?
  • 3 Solutions collect form web for “Visualizzazione dell'image bitmap in imageview tramite semplice adattatore”

    penso sia perché stai scaricando l'image dal web e devi fare queste cose in ASYNC guarda senza troppi download di immagini e dopo che aggiornate solo le immagini.

    In pratica, l'adattatore semplice impegna automaticamente un id di risorse o un URI all'image del tuo layout di row. Ma non support Bitmap.

    Questo è un problema, perché tutti coloro che hanno dovuto gestire bitmap sanno che spesso dobbiamo ridurre le size dell'image per evitare eccezioni outOfMemory. Ma se si desidera aggiungere immagini in una listVista, non è ansible ridurre la dimensione dell'image se solo si fornisce l'URI. Ecco la soluzione:

    Ho modificato il simpleAdapter per essere in grado di gestire bitmap. Aggiungi questa class al tuo progetto e utilizzala invece di simpleAdapter. Quindi, invece di passare un URI o un ressourceId per un'image, passare un Bitmap!

    Di seguito è riportto il codice:

     import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Checkable; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.TextView; public class ExtendedSimpleAdapter extends SimpleAdapter{ List<? extends Map<String, ?>> map; // if fails to compile, replace with List<HashMap<String, Object>> map String[] from; int layout; int[] to; Context context; LayoutInflater mInflater; public ExtendedSimpleAdapter(Context context, List<? extends Map<String, ?>> data, // if fails to compile, do the same replacement as above on this line int resource, String[] from, int[] to) { super(context, data, resource, from, to); layout = resource; map = data; this.from = from; this.to = to; this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); return this.createViewFromResource(position, convertView, parent, layout); } private View createViewFromResource(int position, View convertView, ViewGroup parent, int resource) { View v; if (convertView == null) { v = mInflater.inflate(resource, parent, false); } else { v = convertView; } this.bindView(position, v); return v; } private void bindView(int position, View view) { final Map dataSet = map.get(position); if (dataSet == null) { return; } final ViewBinder binder = super.getViewBinder(); final int count = to.length; for (int i = 0; i < count; i++) { final View v = view.findViewById(to[i]); if (v != null) { final Object data = dataSet.get(from[i]); String text = data == null ? "" : data.toString(); if (text == null) { text = ""; } boolean bound = false; if (binder != null) { bound = binder.setViewValue(v, data, text); } if (!bound) { if (v instanceof Checkable) { if (data instanceof Boolean) { ((Checkable) v).setChecked((Boolean) data); } else if (v instanceof TextView) { // Note: keep the instanceof TextView check at the bottom of these // ifs since a lot of views are TextViews (eg CheckBoxes). setViewText((TextView) v, text); } else { throw new IllegalStateException(v.getClass().getName() + " should be bound to a Boolean, not a " + (data == null ? "<unknown type>" : data.getClass())); } } else if (v instanceof TextView) { // Note: keep the instanceof TextView check at the bottom of these // ifs since a lot of views are TextViews (eg CheckBoxes). setViewText((TextView) v, text); } else if (v instanceof ImageView) { if (data instanceof Integer) { setViewImage((ImageView) v, (Integer) data); } else if (data instanceof Bitmap){ setViewImage((ImageView) v, (Bitmap)data); } else { setViewImage((ImageView) v, text); } } else { throw new IllegalStateException(v.getClass().getName() + " is not a " + " view that can be bounds by this SimpleAdapter"); } } } } } private void setViewImage(ImageView v, Bitmap bmp){ v.setImageBitmap(bmp); } } 

    Questa class si comport esattamente come la class originale (SimpleAdapter)

    Il modo migliore per farlo è creare una class che estende BaseAdapter e quindi instanzia un'attività di async per each image (su post eseguire impostare la bitmap all'evento imageView correttore). Ecco una semplice function per scaricare un'image dal web:

     private Bitmap loadImageFromNetwork(String url) throws MalformsdURLException, IOException { HttpURLConnection conn = (HttpURLConnection) (new URL(url)).openConnection(); conn.connect(); return BitmapFactory.decodeStream(new FlushedInputStream(conn.getInputStream())); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.