超级adapter 大大减少adapter代码
packagecom.clsys.adapter;importjava.util.ArrayList;importcom.clsys.activity.R;importandroid.content.Context;importandroid.util.SparseArray;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.TextView;publicclassSuperLVAdapter<T>extendsBaseAdapter{privatefinalintmIdResource;privateContextmContext;privateArrayList<T>mArrayList;publicViewHolderBaseholder=newViewHolderBase();publicSuperLVAdapter(ContextmContext,intmIdResource,ArrayList<T>mArrayList){this.mContext=mContext;this.mIdResource=mIdResource;this.mArrayList=mArrayList;}@OverridepublicintgetCount(){//TODOAuto-generatedmethodstubreturnmArrayList.size();}@OverridepublicObjectgetItem(intposition){//TODOAuto-generatedmethodstubreturnmArrayList.get(position);}@OverridepubliclonggetItemId(intposition){//TODOAuto-generatedmethodstubreturnposition;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){if(convertView==null){convertView=LayoutInflater.from(mContext).inflate(mIdResource,null);}initViewContent(convertView);returnconvertView;}publicvoidinitViewContent(ViewconvertView){}classViewHolderBase{//Iaddedagenericreturntypetoreducethecastingnoiseinclient//code@SuppressWarnings("unchecked")public<TextendsView>Tget(Viewview,intid){SparseArray<View>viewHolder=(SparseArray<View>)view.getTag();if(viewHolder==null){viewHolder=newSparseArray<View>();view.setTag(viewHolder);}ViewchildView=viewHolder.get(id);if(childView==null){childView=view.findViewById(id);viewHolder.put(id,childView);}return(T)childView;}}}
具体用法:
继承此类后 重写下面这个方法就好了 赶紧试试吧
public void initViewContent(View convertView) { TextView tvTextView = holder.get(convertView, R.id.tv);tv.settext("测试");}
欢迎关注公众账号 jszj2014215 分享android资讯和技术相关问题
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。