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
Post a Comment