android - How to make BaseAdapter work -


i'm trying make category listview . want use code easy understand , using

i have mainactivity class

public class mainactivity extends activity{ private mycustomadapter madapter; listview lst; @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     lst = (listview)findviewbyid(r.id.lstview);     madapter = new mycustomadapter(this);     (int = 1; < 50; i++) {         madapter.additem("sameer blog " + i);         if (i % 4 == 0) {             madapter.addseparatoritem("ahmad " + i);         }     }     lst.setadapter(madapter); } 

}

and mycustomadapter class

public class mycustomadapter extends baseadapter { private static final int type_item = 0; private static final int type_separator = 1; private static final int type_max_count = type_separator + 1;  private arraylist<string> mdata = new arraylist<string>(); private layoutinflater minflater; private context context; private treeset<integer> mseparatorsset = new treeset<integer>();  public mycustomadapter(context c) {     this.context = c;     minflater = (layoutinflater)context.getsystemservice(activity.layout_inflater_service); }  public void additem(final string item) {     mdata.add(item);     notifydatasetchanged(); }  public void addseparatoritem(final string item) {     mdata.add(item);     // save separator position     mseparatorsset.add(mdata.size() - 1);     notifydatasetchanged(); }  public int getitemviewtype(int position) {     return mseparatorsset.contains(position) ? type_separator : type_item; }   public int getviewtypecount() {     return type_max_count; }  public int getcount() {     return mdata.size(); }  public string getitem(int position) {     return mdata.get(position); }  public long getitemid(int position) {     return position; }  public view getview(int position, view convertview, viewgroup parent) {     textview txtview = null;     int type = getitemviewtype(position);     if (convertview == null) {         switch (type) {             case type_item:                 convertview = minflater.inflate(r.layout.list_item, null);                 txtview = (textview)convertview.findviewbyid(r.id.txtitem);                 break;             case type_separator:                 convertview = minflater.inflate(r.layout.list_header, null);                 txtview = (textview)convertview.findviewbyid(r.id.txtheader);                 break;         }      }     txtview.settext(mdata.get(position));     return convertview; } 

}

but nullpointerexception in logcat . can hep me ????

may due

notifydatasetchanged(); 

you call in additem , addseparatoritem without setting adapter in listview.

try changing your:

public mycustomadapter(context c) {     this.context = c;     minflater = (layoutinflater)context.getsystemservice(activity.layout_inflater_service); } 

to:

public mycustomadapter(context c) {     this.context = c;     minflater =layoutinflater.from(getcontext()); } 

Comments