java - Android Custom Adapter work partially -


i have android app in main screen consume webservice , show results in list view.

problems:

  1. only thumb updated. if use simple adapter, work. if use custom adapter, thumb updated;

  2. when scrolling, every list view updated. list view update once when open app.

mainactivity.java

// lista de imóveis list<hashmap<string, string>> alist = new arraylist<hashmap<string, string>>(); for(integer = 0, n = referencias.size(); n > i; ++i) {     hashmap<string, string> hm = new hashmap<string, string>();     hm.put("referencia", "imóvel " + referencias.get(i));      hm.put("valor", valor.get(i).tostring());     hm.put("dormitorio", dormitorio.get(i).tostring());     hm.put("vagas", vagas.get(i).tostring());     hm.put("banheiro", banheiro.get(i).tostring());     hm.put("subcategoria", subcategoria.get(i).tostring());     hm.put("bairro", bairro.get(i).tostring());     hm.put("img", imagem.get(i).tostring());     alist.add(hm); }  // keys used in hashmap string[] = {"referencia", "valor", "dormitorio", "vagas", "banheiro", "subcategoria", "bairro", "img"};  // ids of views in listview_layout int[] = {r.id.referencia, r.id.valor, r.id.num_beds, r.id.num_garagens, r.id.num_baths, r.id.tipo, r.id.bairro, r.id.thumb};  mainadapter customadapter = new mainadapter(mainactivity.this, alist, r.layout.list_main_imoveis, from, to);  listview listview = (listview)findviewbyid(r.id.listviewimoveis); listview.setadapter(customadapter); 

mainadapter.java

package br.com.gtaimoveis.adapter;  import android.content.context; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.simpleadapter;  import java.util.hashmap; import java.util.list; import java.util.map;  import br.com.gtaimoveis.r; import br.com.gtaimoveis.util.downloadtask;  public class mainadapter extends simpleadapter {     private context mcontext;     public layoutinflater inflater = null;      public mainadapter(context context,                        list<? extends map<string, ?>> data, int resource, string[] from,                        int[] to) {         super(context, data, resource, from, to);         mcontext = context;         inflater = (layoutinflater) mcontext                 .getsystemservice(context.layout_inflater_service);     }      @override     public view getview(int position, view convertview, viewgroup parent) {         view vi = convertview;         if (convertview == null)             vi = inflater.inflate(r.layout.list_main_imoveis, null);          hashmap<string, string> data = (hashmap<string, string>) getitem(position);           log.d(">>>>>", data.tostring()); // << data fine here          new downloadtask((imageview) vi.findviewbyid(r.id.thumb))             .execute((string) data.get("img").tostring());          return vi;     } } 

can see going wrong?

almost i've solved problem 1. in getview method update information.

textview valor = (textview) vi.findviewbyid(r.id.valor);  valor .settext(data.get("valor"));  

problem 2 not solved yet.


Comments