java - ExpandableListView with different images for each groupHeader -


i'm gettin difficulties while setting different icons each groupheader while using expandablelistadapter, here's codes.

at main, im calling @ oncreate()

explistview = (expandablelistview) findviewbyid(r.id.lvexp);  // preparing list data preparelistdata();  listadapter = new expandablelistadapter(this, listdataheader, listdatachild);  // setting list adapter explistview.setadapter(listadapter); 

my adapter code:

package info.androidhive.slidingmenu;  import java.util.arraylist; import java.util.hashmap; import java.util.list;  import android.content.context; import android.graphics.typeface; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseexpandablelistadapter; import android.widget.imageview; import android.widget.textview;  public class expandablelistadapter extends baseexpandablelistadapter {      private context _context;     private list<string> _listdataheader; // header titles     // child data in format of header title, child title     private hashmap<string, list<string>> _listdatachild;      private arraylist<integer> groupimages;      public expandablelistadapter(context context, list<string> listdataheader,             hashmap<string, list<string>> listchilddata) {         this._context = context;         this._listdataheader = listdataheader;         this._listdatachild = listchilddata;     }      @override     public object getchild(int groupposition, int childposititon) {         return this._listdatachild.get(this._listdataheader.get(groupposition))                 .get(childposititon);     }      @override     public long getchildid(int groupposition, int childposition) {         return childposition;     }      @override     public view getchildview(int groupposition, final int childposition,             boolean islastchild, view convertview, viewgroup parent) {          final string childtext = (string) getchild(groupposition, childposition);          if (convertview == null) {             layoutinflater infalinflater = (layoutinflater) this._context                     .getsystemservice(context.layout_inflater_service);             convertview = infalinflater.inflate(r.layout.list_item, null);         }          textview txtlistchild = (textview) convertview                 .findviewbyid(r.id.lbllistitem);          txtlistchild.settext(childtext);         return convertview;     }      @override     public int getchildrencount(int groupposition) {         return this._listdatachild.get(this._listdataheader.get(groupposition))                 .size();     }      @override     public object getgroup(int groupposition) {         return this._listdataheader.get(groupposition);     }      @override     public int getgroupcount() {         return this._listdataheader.size();     }      @override     public long getgroupid(int groupposition) {         return groupposition;     }      @override     public view getgroupview(int groupposition, boolean isexpanded,             view convertview, viewgroup parent) {          string headertitle = (string) getgroup(groupposition);             if (convertview == null) {                 layoutinflater infalinflater = (layoutinflater) this._context                         .getsystemservice(context.layout_inflater_service);                 convertview = infalinflater.inflate(r.layout.list_group, null);             }              textview lbllistheader = (textview) convertview                     .findviewbyid(r.id.lbllistheader);             lbllistheader.settypeface(null, typeface.bold);             lbllistheader.settext(headertitle);              imageview imageview = (imageview)     convertview.findviewbyid(r.id.imgiconeproblema);        line 99 -> int imageid = this.groupimages.get(groupposition);             imageview.setimageresource(imageid);              return convertview;     }       @override     public boolean hasstableids() {         return false;     }      @override     public boolean ischildselectable(int groupposition, int childposition) {         return true;     } } 

and finally, preparelist()

private void preparelistdata() {     listdataheader = new arraylist<string>();     listdatachild = new hashmap<string, list<string>>();       groupimages = new arraylist<integer>();     groupimages.add(r.drawable.acessibilidade);     groupimages.add(r.drawable.aguaeesgoto);     groupimages.add(r.drawable.arvore);     groupimages.add(r.drawable.bempublico);     groupimages.add(r.drawable.buraco);     groupimages.add(r.drawable.dengue);     groupimages.add(r.drawable.educacao);     groupimages.add(r.drawable.iluminacao);     groupimages.add(r.drawable.lixo);     groupimages.add(r.drawable.obras2);     groupimages.add(r.drawable.pedestreeciclista);     groupimages.add(r.drawable.pichacao);     groupimages.add(r.drawable.queimada);     groupimages.add(r.drawable.saude);     groupimages.add(r.drawable.social);     groupimages.add(r.drawable.transito);     groupimages.add(r.drawable.transporte);       // adding child data      listdataheader.add("acessibilidade");     listdataheader.add("Água e esgoto");     listdataheader.add("Árvore");     listdataheader.add("bem público");     listdataheader.add("buraco");     listdataheader.add("dengue");     listdataheader.add("educação");     listdataheader.add("lixo");     listdataheader.add("iluminação e energia");     listdataheader.add("obra");     listdataheader.add("pedestre e ciclista");     listdataheader.add("pichação");     listdataheader.add("poluição");     listdataheader.add("queimada");     listdataheader.add("saúde");     listdataheader.add("social");     listdataheader.add("transporte");     listdataheader.add("trânsito");       // adding child data     list<string> acessibilidade = new arraylist<string>();     acessibilidade.add("falta de sinalização para deficientes físicos, visuais e auditivos");     acessibilidade.add("dispositivo de acessibilidade em mau estado");     acessibilidade.add("falta de acessibilidade");     acessibilidade.add("pulp fiction");      list<string> aguaeesgoto = new arraylist<string>();     aguaeesgoto.add("falta de saneamento básico");     aguaeesgoto.add("esgoto céu aberto");     aguaeesgoto.add("falta de água");     aguaeesgoto.add("tratamento de esgoto inadequado");     aguaeesgoto.add("vazamento de água");     aguaeesgoto.add("bueiro entupido");     aguaeesgoto.add("bueiro sem tampa");     aguaeesgoto.add("Água encanada com má qualidade");     aguaeesgoto.add("alagamento");      list<string> arvore = new arraylist<string>();     arvore.add("Árvore caída");     arvore.add("poda de árvore necessária");     arvore.add("poda de árvore irregular");     arvore.add("arborização necessária");      // adding child data     list<string> bempublico = new arraylist<string>();     bempublico.add("bem público em mau estado de conservação");     bempublico.add("vandalismo em bem público");     bempublico.add("atendimento ruim em serviço público");     bempublico.add("má administração de bem público");     bempublico.add("falta de sinalização em bem público");      list<string> buraco = new arraylist<string>();     buraco.add("buraco no asfalto");     buraco.add("buraco no chão");     buraco.add("rua esburacada");      list<string> dengue = new arraylist<string>();     dengue.add("foco de dengue");     dengue.add("terreno baldio");      list<string> educacao = new arraylist<string>();     educacao.add("ensino precário");     educacao.add("escola em mau estado");     educacao.add("falta de funcionários na escola");     educacao.add("falta de material escolar");     educacao.add("falta de professores em escola");     educacao.add("falta de vagas em escola");      list<string> lixo = new arraylist<string>();     lixo.add("lixo ou entulho");     lixo.add("veículo abandonado");      list<string> iluminacaoeenergia = new arraylist<string>();     iluminacaoeenergia.add("falta de iluminação");     iluminacaoeenergia.add("poste de luz em mau estado");     iluminacaoeenergia.add("poste de luz queimado");     iluminacaoeenergia.add("fiação irregular");     iluminacaoeenergia.add("iluminação pública irregular");     iluminacaoeenergia.add("lâmpada acesa durante o dia");     iluminacaoeenergia.add("lâmpaga apagada à noite");      list<string> obra = new arraylist<string>();     obra.add("obra pública irregular");     obra.add("obra públuca necessária");     obra.add("obra pública parada");     obra.add("obra pública atrasada");     obra.add("obra pública mau executada");     obra.add("obra particular abandonada");     obra.add("obra particular irregular");      list<string> pedestreeciclista = new arraylist<string>();     pedestreeciclista.add("calçada obstruída por poste mobiliário urbano");     pedestreeciclista.add("tempo de travessia insuficiente semáforo de pedestres");     pedestreeciclista.add("falta de sinalização para pedestres");     pedestreeciclista.add("calçada para pedestre em mau estado");     pedestreeciclista.add("falta de faixa de pedestre");     pedestreeciclista.add("semáfoto de pedestre quebrado");     pedestreeciclista.add("calçada obstruída por estabelecimento");     pedestreeciclista.add("calçada obstruída por veículo");     pedestreeciclista.add("necessidade de bicicletário ou paraciclo");     pedestreeciclista.add("ciclovia mal sinalizada");     pedestreeciclista.add("necessidade de ciclovia");     pedestreeciclista.add("ciclovia em mau estado");     pedestreeciclista.add("ciclovia irregular");      list<string> pichacao = new arraylist<string>();     pichacao.add("pichação");      list<string> poluicao = new arraylist<string>();     poluicao.add("poluição ar");     poluicao.add("poluição sonora");     poluicao.add("poluição visual");      list<string> queimada = new arraylist<string>();     queimada.add("queimada");      list<string> saude = new arraylist<string>();     saude.add("atendimento de saúde precário");     saude.add("falta de profissionais de saúde");     saude.add("falta de leitos");     saude.add("instalações de saúde precárias");     saude.add("controle de zoonoses necessário");     saude.add("epidemia");     saude.add("infestação");      list<string> social = new arraylist<string>();     social.add("moradores de rua");     social.add("pedintes");     social.add("ponto de venda ou consumo de drogas");     social.add("invasão ou assentamento em propiedade particular");     social.add("ocupação de local público");      list<string> transporte = new arraylist<string>();     transporte.add("ponto de parada sem abrigo");     transporte.add("veículo de transporte público em mau estado");     transporte.add("longo tempo de espera por transporte público");     transporte.add("superlotação no transporte público");     transporte.add("má conduta motorista ou funcionário transporte público");     transporte.add("falta de segurança no transporte público");     transporte.add("interrupção no serviço ou trajeto transporte público");     transporte.add("transporte público sem ventilação adequeada");     transporte.add("estação em mau estado");     transporte.add("ponto de parada em mau estado");     transporte.add("falta de transporte público");     transporte.add("falta ou deficiência de sinalização no transporte público");      list<string> transito = new arraylist<string>();     transito.add("falta de sinalização de trânsito");     transito.add("placa de sinalização de trânsito em mau estado");     transito.add("congestionamento");     transito.add("semáforo de trânsito quebrado");     transito.add("semáforo de trânsito necessário");     transito.add("via de trânsito em mau estado");     transito.add("veículo estacionado em local proibido");     transito.add("trânsito de veículos proibidos");     transito.add("falta de fiscalização de trânsito");      listdatachild.put(listdataheader.get(0), acessibilidade); // header, child data     listdatachild.put(listdataheader.get(1), aguaeesgoto);     listdatachild.put(listdataheader.get(2), arvore);     listdatachild.put(listdataheader.get(3), bempublico);     listdatachild.put(listdataheader.get(4), buraco);     listdatachild.put(listdataheader.get(5), dengue);     listdatachild.put(listdataheader.get(6), educacao);     listdatachild.put(listdataheader.get(7), lixo);     listdatachild.put(listdataheader.get(8), iluminacaoeenergia);     listdatachild.put(listdataheader.get(9), obra);     listdatachild.put(listdataheader.get(10), pedestreeciclista);     listdatachild.put(listdataheader.get(11), pichacao);     listdatachild.put(listdataheader.get(12), poluicao);     listdatachild.put(listdataheader.get(13), queimada);     listdatachild.put(listdataheader.get(14), saude);     listdatachild.put(listdataheader.get(15), social);     listdatachild.put(listdataheader.get(16), transporte);     listdatachild.put(listdataheader.get(17), transito);   } 

without knowing why, i'm gettin error

"java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.object java.util.arraylist.get(int)' on null reference @ info.androidhive.slidingmenu.expandablelistadapter.getgroupview (expandablelistadapter.java: 99)

line 99 marked above.

thanks

i think, not initializing groupimages in expandablelistadapter null. pass groupimages mainactivity expandablelistadapter (like listchilddata , listdataheader).

public expandablelistadapter(context context, list<string> listdataheader,         hashmap<string, list<string>> listchilddata, arraylist<integer> groupimages) {     this._context = context;     this._listdataheader = listdataheader;     this._listdatachild = listchilddata;     this.groupimages = groupimages; } 

Comments

Popular posts from this blog

c++ - Delete matches in OpenCV (Keypoints and descriptors) -

java - Could not locate OpenAL library -

sorting - opencl Bitonic sort with 64 bits keys -