In the development of the interface of the list will often rewrite Baseadapter, using the knowledge of the Internet skills, self-made it two times the package is convenient for later use in the project. It is convenient to use.
Of course how you look at the code can be, can also be expandablelistadapter the same package!
To use a custom baseadapter:
Package Com.cyy.myandroid;import Android.content.context;import Android.provider.contactscontract.data;import Android.text.spannable;import Android.text.spannablestring;import Android.text.style.foregroundcolorspan;import Android.view.view;import Android.widget.textview;public class Rankinglistadapter extends Baseadapter<data> { Public Rankinglistadapter (Context context) {super (context);} @Overridepublic int Getcontentview () {//item layout return r.layout.activity_main_item;} @Overridepublic void Oninitview (view view, int position) {TextView Tvnumb = get (view, r.id.tv); The control in the direct item layout Data data = GetItem (position), Tvnumb.settext (string.valueof (position + 1));}}
Custom Baseadapter:
Package Com.cyy.myandroid;import Java.util.arraylist;import Java.util.list;import android.content.context;import Android.util.sparsearray;import Android.view.layoutinflater;import Android.view.view;import Android.view.viewgroup;public abstract class Baseadapter<t> extends Android.widget.BaseAdapter {private List <T> list;protected Context Context;public Baseadapter (context context) {init (context, new arraylist<t> ());} Public Baseadapter (Context context, list<t> list) {init (context, list);} private void init (context context, list<t> List) {this.list = List;this.context = Context;} Public list<t> getList () {return List;} public void setlist (list<t> list) {this.list = list;} public void Clear () {this.list.clear (); notifydatasetchanged ();} public void AddAll (list<t> list) {if (list = null) {this.list.addAll (list); notifydatasetchanged ();}} @Overridepublic int GetCount () {return list = = null? 0:list.size ();} @Overridepublic T getItem (int position) {REturn List.get (position);} @Overridepublic long Getitemid (int position) {return position;} @Overridepublic view GetView (int position, view Convertview, ViewGroup parent) {if (null = = Convertview) {Convertview = in Flate (Getcontentview ());} Oninitview (Convertview, position); return Convertview;} /** load Layout */private View inflate (int layoutresid) {Layoutinflater layoutinflater = (layoutinflater) Context.getsystemservice (Context.layout_inflater_service); View view = Layoutinflater.inflate (Layoutresid, null); return view;} public abstract int Getcontentview ();p ublic abstract void Oninitview (view view, int position);/** * * @param view * Converview * @param ID * control's ID * @return return <t extends view> */@SuppressWarnings ("unchecked") protect Ed <e extends view> E get (view view, int id) {sparsearray<view> Viewholder = (sparsearray<view>) view.ge Ttag (); if (null = = Viewholder) {Viewholder = new sparsearray<view> (); View.settag (Viewholder);} View Childview = VieWholder.get (ID), if (null = = Childview) {Childview = View.findviewbyid (ID); Viewholder.put (ID, childview);} Return (E) Childview;}}
Android perfectly baseadapter two times in package