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