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
*/
publicTgetView(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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。