android - own adapter for expandablelistview crash cannot cast hasmap to list -


i have onw adapter expandiblelistview, show parents fine when click in group see childs crash:

java.lang.classcastexception: java.util.hashmap cannot cast java.util.list

this own adapter:

    public class adaptadorlista extends simpleexpandablelistadapter {       private context mcontext;       private list<? extends list<? extends map<string, ?>>> mchilddata;       private list<? extends map<string, ?>> mparentdata;       private string[] mchildfrom;       private int[] mchildto;         public adaptadorlista(context contexto,             list<? extends map<string, ?>> crealistadegrupos,             int lineapadre,             string[] strings,             int[] is,             list<? extends list<? extends map<string, ?>>> crealistadehijos,             int lineahija,             string[] strings2,             int[] is2) {            super(contexto, crealistadegrupos, lineapadre, strings, is,                    crealistadehijos, lineahija, strings2, is2);             mcontext = contexto;           mchilddata = crealistadehijos;           mchildfrom = strings2;           mchildto = is2;                  }        @override          public long getchildid(int groupposition, int childposition) {         return 0;       }       public view getchildview(int groupposition, int childposition,boolean islastchild, view convertview, viewgroup parent) {         view v;        if (convertview == null) {                v = newchildview(islastchild, parent);        } else {                v = convertview;        }        bindview(v, mchilddata.get(groupposition).get(childposition), mchildfrom, mchildto, groupposition, childposition);        return v;  }       // method binds data views specified in child xml                        private void bindview(view view, map<string, ?> data,string[] from, int[] to, int groupposition, int childposition) {                                int len = to.length - 1;                                // apply textviews                                (int = 0; < len; i++) {                                        textview v = (textview) view.findviewbyid(to[i]);                                        if (v != null) {                                                v.settext((string) data.get(from[i]));                                              }                                         }                                                     }         @override       public boolean ischildselectable(int groupposition, int childposition) {         return true;       }                       } 

and constructor 2 methods populate data:

adaptadorlista explistadapter = new adaptadorlista(                         contexto,                         crealistadegrupos(),                         r.layout.linea_padre,                         new string[] { "numero_servicio","profesion","direccion","fecha_cad" },                         new int[] { r.id.tvservicio,r.id.tvprofesion,r.id.tvdireccion,r.id.tvfecha},                                 crealistadehijos(),                          r.layout.linea_hija,                             new string[] { "tipo", "diasencurso","estado","fechaprocita" },                          new int[] {r.id.tvtipo , r.id.tvdiasencurso, r.id.tvestado,r.id.tvfechaproximacita}                          );                  setlistadapter( explistadapter); registerforcontextmenu(getexpandablelistview());                         }                  private list<? extends list<? extends map<string, ?>>> crealistadehijos() {                     arraylist resultado_hijo = new arraylist();                     for(int i=0;i<arrayservicios.size();i++){                         hashmap hijo = new hashmap();                         hijo.put("tipo", tipos.get(i));                         hijo.put("diasencurso", diasencurso.get(i));                         hijo.put("estado", estados.get(i));                         hijo.put("fechaprocita", fechasproximascitas.get(i));                           resultado_hijo.add(hijo);                     }                      return (list)resultado_hijo;    }                  @suppresswarnings({ "unchecked", "rawtypes" })                 private list<? extends map<string, ?>> crealistadegrupos() {                       arraylist resultado_padre = new arraylist();                     for(int i=0;i<arrayservicios.size();i++){                         hashmap padre = new hashmap();                         padre.put("numero_servicio", numerosservicios.get(i));                         padre.put("profesion", profesiones.get(i));                         padre.put("direccion", direcciones.get(i));                         padre.put("fecha_cad", fechascaduca.get(i));                          resultado_padre.add(padre);                     }                      return (list)resultado_padre;                 } 

i found example using adaptador , works not me..

solution :

/********metodo que rellena la lista de hijos*********************/ private list<? extends list<? extends map<string, ?>>> crealistadehijos() {                 list<list<map<string, string>>> resultado_hijo = new arraylist<list<map<string, string>>>();                   for(int i=0;i<arrayservicios.size();i++){                     list<map<string, string>> hijo = new arraylist<map<string,string>>();                      map<string, string> curchildmap = new hashmap<string, string>();                       curchildmap.put("tipo", tipos.get(i));                      curchildmap.put("diasencurso", diasencurso.get(i));                      curchildmap.put("estado", estados.get(i));                      curchildmap.put("fechaprocita", fechasproximascitas.get(i));                      hijo.add(curchildmap);                                       resultado_hijo.add(hijo);             }              return resultado_hijo;             } /*********************************************************************/ 

the classcastexception seems in following method:

private list<? extends list<? extends map<string, ?>>> crealistadehijos() {     arraylist resultado_hijo = new arraylist();     for(int i=0;i<arrayservicios.size();i++){         hashmap hijo = new hashmap();         hijo.put("tipo", tipos.get(i));         hijo.put("diasencurso", diasencurso.get(i));         hijo.put("estado", estados.get(i));         hijo.put("fechaprocita", fechasproximascitas.get(i));           resultado_hijo.add(hijo);     }      return (list)resultado_hijo;     

}

the return type expected be:

list<? extends list<? extends map<string, ?>>>

whereas return variable resultado_hijo of type

arraylist<hashmap<string, ?> or ? extends list<? extends map<string, ?>>.

the outer list missing.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -