Android開發(fā)中總結(jié)的Adapter工具類【附完整源碼下載】
本文實(shí)例講述了Android開發(fā)中總結(jié)的Adapter工具類。分享給大家供大家參考,具體如下:
Adapter是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個(gè)重要的紐帶。在常見的View(ListView,GridView)等地方都需要用到Adapter。
每個(gè)開發(fā)工程師都會(huì)有自己的一些常用到的工具類,今天我分享一下我自己總結(jié)的關(guān)于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對(duì)象 * * @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獲取對(duì)于的控件,如果沒有則加入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設(shè)置字符串 * * @param viewId * @param text * @return */ public ViewHolder setText(int viewId, String text) { TextView view = getView(viewId); view.setText(text); return this; } /** * 為ImageView設(shè)置圖片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageResource(int viewId, int drawableId) { ImageView view = getView(viewId); view.setImageResource(drawableId); return this; } /** * 為ImageView設(shè)置圖片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageBitmap(int viewId, Bitmap bm) { ImageView view = getView(viewId); view.setImageBitmap(bm); return this; } /** * 通過圖片路徑為ImageView設(shè)置圖片 * @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)+"個(gè)") ; // 通過路徑設(shè)置圖片 // 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)+"個(gè)") ; item_iv.setImageResource(R.drawable.ic_launcher); item_ib.setColorFilter(Color.parseColor("#77000000")); */ } }
附:完整實(shí)例代碼點(diǎn)擊此處本站下載。
PS:該下載源碼包含了eclipse與studio兩個(gè)壓縮包。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android布局layout技巧總結(jié)》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- android開發(fā)中ListView與Adapter使用要點(diǎn)介紹
- 詳解Android App中ViewPager使用PagerAdapter的方法
- Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法
- Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實(shí)現(xiàn))
- Android listview與adapter詳解及實(shí)例代碼
- Android開發(fā)中ListView自定義adapter的封裝
- Android中的Adapter簡(jiǎn)單介紹
- Android Adapter的幾個(gè)常用方法
- Android中GridView和ArrayAdapter用法實(shí)例分析
- Kotlin編寫Android適配器Adapter
- Android ListView適配器(Adapter)優(yōu)化方法詳解
相關(guān)文章
Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類完結(jié)篇
這篇文章主要為大家介紹了Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類完結(jié)篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Android 異步獲取網(wǎng)絡(luò)圖片并處理導(dǎo)致內(nèi)存溢出問題解決方法
Android異步獲取網(wǎng)絡(luò)圖片并處理圖片Out Of Memory內(nèi)存溢出如何解決呢?本文介紹了操作步驟,感興趣的朋友可以了解下或許對(duì)你有所幫助2013-02-02快速調(diào)試Android應(yīng)用系統(tǒng)修改ro.debuggable屬性的兩種方式
這篇文章主要為大家介紹了快速調(diào)試Android應(yīng)用系統(tǒng)修改ro.debuggable屬性的兩種方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Android TabWidget切換卡的實(shí)現(xiàn)應(yīng)用
本篇文章小編為大家介紹,Android TabWidget切換卡的實(shí)現(xiàn)應(yīng)用。需要的朋友參考下2013-04-04Android?Framework如何實(shí)現(xiàn)Binder
這篇文章主要介紹了Android?Framework如何實(shí)現(xiàn)Binder,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09不允許錯(cuò)過的Anndroid技術(shù)經(jīng)驗(yàn)60條
不允許錯(cuò)過的Anndroid技術(shù)經(jīng)驗(yàn)60條,與大家分享,希望可以提高大家Android開發(fā)水平,感興趣的朋友可以參考一下2016-02-02Android 上下滾動(dòng)TextSwitcher實(shí)例詳解
這篇文章主要介紹了Android 上下滾動(dòng)TextSwitcher實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06Android自定義gridView仿頭條頻道拖動(dòng)管理功能
這篇文章主要介紹了Android自定義gridView仿頭條頻道拖動(dòng)管理功能,本文通過實(shí)例代碼效果圖展示給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12