Android開發(fā)中總結(jié)的Adapter工具類【附完整源碼下載】
本文實(shí)例講述了Android開發(fā)中總結(jié)的Adapter工具類。分享給大家供大家參考,具體如下:
Adapter是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個重要的紐帶。在常見的View(ListView,GridView)等地方都需要用到Adapter。
每個開發(fā)工程師都會有自己的一些常用到的工具類,今天我分享一下我自己總結(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對象
*
* @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設(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)+"個") ;
// 通過路徑設(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)+"個") ;
item_iv.setImageResource(R.drawable.ic_launcher);
item_ib.setColorFilter(Color.parseColor("#77000000"));
*/
}
}
附:完整實(shí)例代碼點(diǎn)擊此處本站下載。
PS:該下載源碼包含了eclipse與studio兩個壓縮包。
更多關(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é)》
希望本文所述對大家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簡單介紹
- Android Adapter的幾個常用方法
- Android中GridView和ArrayAdapter用法實(shí)例分析
- Kotlin編寫Android適配器Adapter
- Android ListView適配器(Adapter)優(yōu)化方法詳解
相關(guān)文章
Android自定義有限制區(qū)域的圖例角度自識別涂鴉工具類完結(jié)篇
這篇文章主要為大家介紹了Android自定義有限制區(qū)域的圖例角度自識別涂鴉工具類完結(jié)篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android 異步獲取網(wǎng)絡(luò)圖片并處理導(dǎo)致內(nèi)存溢出問題解決方法
Android異步獲取網(wǎng)絡(luò)圖片并處理圖片Out Of Memory內(nèi)存溢出如何解決呢?本文介紹了操作步驟,感興趣的朋友可以了解下或許對你有所幫助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-10
Android TabWidget切換卡的實(shí)現(xiàn)應(yīng)用
本篇文章小編為大家介紹,Android TabWidget切換卡的實(shí)現(xiàn)應(yīng)用。需要的朋友參考下2013-04-04
Android?Framework如何實(shí)現(xiàn)Binder
這篇文章主要介紹了Android?Framework如何實(shí)現(xiàn)Binder,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
不允許錯過的Anndroid技術(shù)經(jīng)驗(yàn)60條
不允許錯過的Anndroid技術(shù)經(jīng)驗(yàn)60條,與大家分享,希望可以提高大家Android開發(fā)水平,感興趣的朋友可以參考一下2016-02-02
Android 上下滾動TextSwitcher實(shí)例詳解
這篇文章主要介紹了Android 上下滾動TextSwitcher實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06

