Android开发中总结的Adapter工具类【附完整源码下载】
本文实例讲述了Android开发中总结的Adapter工具类。分享给大家供大家参考,具体如下:
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。
每个开发工程师都会有自己的一些常用到的工具类,今天我分享一下我自己总结的关于Adapter的工具类,话不多说直接上代码
CommonAdapter:
publicabstractclassCommonAdapterextendsBaseAdapter { protectedLayoutInflatermInflater; protectedContextmContext; protectedList mDatas; protectedfinalintmItemLayoutId; publicCommonAdapter(Contextcontext,List mDatas,intitemLayoutId) { this.mContext=context; this.mInflater=LayoutInflater.from(mContext); this.mDatas=mDatas; this.mItemLayoutId=itemLayoutId; } @Override publicintgetCount() { returnmDatas.size(); } @Override publicTgetItem(intposition) { returnmDatas.get(position); } @Override publiclonggetItemId(intposition) { returnposition; } @Override publicViewgetView(intposition,ViewconvertView,ViewGroupparent) { finalViewHolderviewHolder=getViewHolder(position,convertView, parent); convert(viewHolder,getItem(position),position); returnviewHolder.getConvertView(); } publicabstractvoidconvert(ViewHolderhelper,Titem,intpostion); privateViewHoldergetViewHolder(intposition,ViewconvertView, ViewGroupparent) { returnViewHolder.get(mContext,convertView,parent,mItemLayoutId, position); } }
ViewHolder:
publicclassViewHolder { privatefinalSparseArraymViews; privateintmPosition; privateViewmConvertView; privateViewHolder(Contextcontext,ViewGroupparent,intlayoutId, intposition) { this.mPosition=position; this.mViews=newSparseArray (); mConvertView=LayoutInflater.from(context).inflate(layoutId,parent, false); //setTag mConvertView.setTag(this); } /** *拿到ViewHolder对象 * *@paramcontext *@paramconvertView *@paramparent *@paramlayoutId *@paramposition *@return */ publicstaticViewHolderget(Contextcontext,ViewconvertView, ViewGroupparent,intlayoutId,intposition) { ViewHolderholder=null; if(convertView==null) { holder=newViewHolder(context,parent,layoutId,position); }else { holder=(ViewHolder)convertView.getTag(); holder.mPosition=position; } returnholder; } publicViewgetConvertView() { returnmConvertView; } /** *通过控件的Id获取对于的控件,如果没有则加入views * *@paramviewId *@return */ public TgetView(intviewId) { Viewview=mViews.get(viewId); if(view==null) { view=mConvertView.findViewById(viewId); mViews.put(viewId,view); } return(T)view; } /** *为TextView设置字符串 * *@paramviewId *@paramtext *@return */ publicViewHoldersetText(intviewId,Stringtext) { TextViewview=getView(viewId); view.setText(text); returnthis; } /** *为ImageView设置图片 * *@paramviewId *@paramdrawableId *@return */ publicViewHoldersetImageResource(intviewId,intdrawableId) { ImageViewview=getView(viewId); view.setImageResource(drawableId); returnthis; } /** *为ImageView设置图片 * *@paramviewId *@paramdrawableId *@return */ publicViewHoldersetImageBitmap(intviewId,Bitmapbm) { ImageViewview=getView(viewId); view.setImageBitmap(bm); returnthis; } /** *通过图片路径为ImageView设置图片 *@paramviewId *@paramdrawableId *@return */ publicViewHoldersetImageByUrl(intviewId,Stringurl) { ImageLoader.getInstance(3,Type.LIFO).loadImage(url,(ImageView)getView(viewId)); returnthis; } publicintgetPosition() { returnmPosition; } }
MyAdapter:
publicclassMyAdapterextendsCommonAdapter{ privateList mData; publicMyAdapter(Contextcontext,List mDatas,intitemLayoutId) { super(context,mDatas,itemLayoutId); this.mDatas=mDatas; } @Override publicvoidconvert(finalViewHolderhelper,finalStringitem,intpostion) { /** *第一种 */ helper.setImageResource(R.id.item_ib01,R.drawable.ic_launcher); helper.setImageResource(R.id.item_iv01, R.drawable.ic_launcher); helper.setText(R.id.item_tv01,"我是第"+mDatas.get(postion)+"个"); //通过路径设置图片 //helper.setImageByUrl(R.id.id_item_image,mDirPath+"/"+item); /* *第二种 */ /* * finalImageViewitem_iv=helper.getView(R.id.item_iv01); finalImageButtonitem_ib=helper.getView(R.id.item_ib01); TextViewitem_tv=helper.getView(R.id.item_tv01); item_tv.setText("我是第"+mDatas.get(postion)+"个"); item_iv.setImageResource(R.drawable.ic_launcher); item_ib.setColorFilter(Color.parseColor("#77000000")); */ } }
附:完整实例代码点击此处本站下载。
PS:该下载源码包含了eclipse与studio两个压缩包。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。