packagecom.base.baseandroid;importandroid.content.Context;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importjava.util.List;publicabstractclassCommonAdapter<T>extendsBaseAdapter{privateContextmContext;privateList<T>mDatas;privateintmLayoutId;publicCommonAdapter(Contextcontext,List<T>datas,intlayoutId){this.mContext=context;this.mDatas=datas;this.mLayoutId=layoutId;}@OverridepublicintgetCount(){returnmDatas.size();}@OverridepublicTgetItem(intposition){returnmDatas.get(position);}@OverridepubliclonggetItemId(intposition){returnposition;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder=ViewHolder.get(mContext,convertView,mLayoutId,position);setValueForView(holder,getItem(position));returnholder.getConvertView();}publicabstractvoidsetValueForView(ViewHolderholder,Tt);}packagecom.base.baseandroid;importcom.lidroid.xutils.BitmapUtils;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.util.SparseArray;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.ImageView;importandroid.widget.TextView;publicclassViewHolder{privateSparseArray<View>mViews;protectedintmPosition;privateViewmConvertView;privateContextcontext;privateBitmapUtilsbitmapUtils;publicViewgetConvertView(){returnmConvertView;}publicViewHolder(Contextcontext,intlayoutId,intposition){this.mPosition=position;this.mViews=newSparseArray<View>();this.context=context;bitmapUtils=newBitmapUtils(context);mConvertView=LayoutInflater.from(context).inflate(layoutId,null);mConvertView.setTag(this);}publicstaticViewHolderget(Contextcontext,ViewconvertView,intlayoutId,intposition){if(convertView==null){returnnewViewHolder(context,layoutId,position);}else{ViewHolderholder=(ViewHolder)convertView.getTag();holder.mPosition=position;//注意:这句代码是必须的,否则复用的时候position会出错returnholder;}}public<TextendsView>TgetViewById(intviewId){Viewview=mViews.get(viewId);if(view==null){view=getConvertView().findViewById(viewId);mViews.put(viewId,view);}return(T)view;}publicViewHoldersetText(intviewId,Stringtext){TextViewtextView=getViewById(viewId);textView.setText(text);returnthis;}publicViewHoldersetImageResource(intviewId,intresId){ImageViewp_w_picpathView=getViewById(viewId);p_w_picpathView.setImageResource(resId);returnthis;}publicViewHoldersetImageBitmap(intviewId,Bitmapbitmap){ImageViewp_w_picpathView=getViewById(viewId);p_w_picpathView.setImageBitmap(bitmap);returnthis;}publicViewHoldersetImg(intviewId,Stringurl){ImageViewp_w_picpathView=getViewById(viewId);bitmapUtils.display(p_w_picpathView,url);returnthis;}publicViewHoldersetImgOnClick(intviewId,OnClickListeneronClickListener){ImageViewp_w_picpathView=getViewById(viewId);p_w_picpathView.setOnClickListener(onClickListener);returnthis;}}packagecom.base.adapter;importjava.util.List;importandroid.content.Context;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Toast;importcom.base.baseandroid.CommonAdapter;importcom.base.baseandroid.ViewHolder;importcom.base.bean.CountryBean;importcom.example.baseandroid.R;publicclassMyAdapterextendsCommonAdapter<CountryBean>{privateContextcontext;publicMyAdapter(Contextcontext,List<CountryBean>data,intlayoutId){super(context,data,layoutId);this.context=context;}@OverridepublicvoidsetValueForView(ViewHolderholder,finalCountryBeanbean){holder.setText(R.id.tv_list_country,bean.getcCountryName());holder.setImg(R.id.iv_list_country,bean.getFlagImage());holder.setImgOnClick(R.id.iv_list_country,newOnClickListener(){@OverridepublicvoidonClick(Viewv){Toast.makeText(context,bean.getcCountryName(),1).show();}});}}