Android开发中总结的Adapter工具类【附完整源码下载】
程序员文章站
2022-06-04 10:45:15
本文实例讲述了android开发中总结的adapter工具类。分享给大家供大家参考,具体如下:
adapter是连接后端数据和前端显示的适配器接口,是数据和ui(view...
本文实例讲述了android开发中总结的adapter工具类。分享给大家供大家参考,具体如下:
adapter是连接后端数据和前端显示的适配器接口,是数据和ui(view)之间一个重要的纽带。在常见的view(listview,gridview)等地方都需要用到adapter。
每个开发工程师都会有自己的一些常用到的工具类,今天我分享一下我自己总结的关于adapter的工具类,话不多说直接上代码
commonadapter:
public abstract class commonadapter<t> extends baseadapter { protected layoutinflater minflater; protected context mcontext; protected list<t> mdatas; protected final int mitemlayoutid; public commonadapter(context context, list<t> mdatas, int itemlayoutid) { this.mcontext = context; this.minflater = layoutinflater.from(mcontext); this.mdatas = mdatas; this.mitemlayoutid = itemlayoutid; } @override public int getcount() { return mdatas.size(); } @override public t getitem(int position) { return mdatas.get(position); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { final viewholder viewholder = getviewholder(position, convertview, parent); convert(viewholder, getitem(position) , position); return viewholder.getconvertview(); } public abstract void convert(viewholder helper, t item , int postion); private viewholder getviewholder(int position, view convertview, viewgroup parent) { return viewholder.get(mcontext, convertview, parent, mitemlayoutid, position); } }
viewholder:
public class viewholder { private final sparsearray<view> mviews; private int mposition; private view mconvertview; private viewholder(context context, viewgroup parent, int layoutid, int position) { this.mposition = position; this.mviews = new sparsearray<view>(); mconvertview = layoutinflater.from(context).inflate(layoutid, parent, false); // settag mconvertview.settag(this); } /** * 拿到viewholder对象 * * @param context * @param convertview * @param parent * @param layoutid * @param position * @return */ public static viewholder get(context context, view convertview, viewgroup parent, int layoutid, int position) { viewholder holder = null; if (convertview == null) { holder = new viewholder(context, parent, layoutid, position); } else { holder = (viewholder) convertview.gettag(); holder.mposition = position; } return holder; } public view getconvertview() { return mconvertview; } /** * 通过控件的id获取对于的控件,如果没有则加入views * * @param viewid * @return */ public <t extends view> t getview(int viewid) { view view = mviews.get(viewid); if (view == null) { view = mconvertview.findviewbyid(viewid); mviews.put(viewid, view); } return (t) view; } /** * 为textview设置字符串 * * @param viewid * @param text * @return */ public viewholder settext(int viewid, string text) { textview view = getview(viewid); view.settext(text); return this; } /** * 为imageview设置图片 * * @param viewid * @param drawableid * @return */ public viewholder setimageresource(int viewid, int drawableid) { imageview view = getview(viewid); view.setimageresource(drawableid); return this; } /** * 为imageview设置图片 * * @param viewid * @param drawableid * @return */ public viewholder setimagebitmap(int viewid, bitmap bm) { imageview view = getview(viewid); view.setimagebitmap(bm); return this; } /** * 通过图片路径为imageview设置图片 * @param viewid * @param drawableid * @return */ public viewholder setimagebyurl(int viewid, string url) { imageloader.getinstance(3,type.lifo).loadimage(url, (imageview) getview(viewid)); return this; } public int getposition() { return mposition; } }
myadapter:
public class myadapter extends commonadapter<string> { private list<string> mdata ; public myadapter(context context, list<string> mdatas, int itemlayoutid) { super(context, mdatas, itemlayoutid); this.mdatas = mdatas ; } @override public void convert(final viewholder helper, final string item , int postion) { /** * 第一种 */ 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); /* * 第二种 */ /* * final imageview item_iv = helper.getview(r.id.item_iv01); final imagebutton item_ib = helper.getview(r.id.item_ib01); textview item_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程序设计有所帮助。