Android萬能適配器(二)封裝Adapter,androidadapter
本文是上篇文字的繼續,看本文前需要瞭解ViewHolder封裝。
Android萬能適配器(一)封裝ViewHolder
封裝Adapter
Adapter這裡主要是做一個簡單的封裝繼承BaseAdapter類會預設需要覆蓋幾個方法。比如getCount ,getItemID等。我們一般寫的Adapter每次都會重複這幾個方法,內容返回的也幾乎一模一樣,所以這裡可以封裝到父類裡面。用泛型可以虛擬一個實體類,達到使用list效果。使用這個類時候 傳人一個真實實體類就ok了。下面這個就是封裝好後的Adapter源碼了。一般希望名字為BaseAdapter為了區分和系統BaseAdapter的區別這裡使用MyBaseAdapter。
public abstract class MyBaseAdapter<T> extends BaseAdapter {protected LayoutInflater mInflater;protected Context mContext;protected List<T> mDatas;protected final int mLayoutId;public MyBaseAdapter(Context context, List<T> mDatas, int mLayoutId) {mInflater = LayoutInflater.from(context);this.mContext = context;this.mDatas = mDatas;this.mLayoutId = mLayoutId;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int position) {return mDatas.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// 執行個體化一個viewHolderViewHolder viewHolder = ViewHolder.get(mContext, convertView, parent,mLayoutId, position);holdItem(viewHolder, mDatas.get(position));return viewHolder.getConvertView();}public abstract void holdItem(ViewHolder holder, T item);}
這裡使用封裝好的Adapter實現上篇文章只有一個TextView的列表適配器,源碼如下
public class TestAdapter extends MyBaseAdapter<String>{public TestAdapter(Context context, List<String> mDatas, int mLayoutId) {super(context, mDatas, mLayoutId); }@Overridepublic void holdItem(ViewHolder holder, String item) {TextView view = holder.getView(R.id.text_title); <span style="white-space:pre"></span>view.setText(item); }}現在的適配器看著非常簡單,而且效率非常好。喜歡就贊一個吧
使用Adapter跟普通的是一樣的。直接listview 設定就ok
private void initListView() {mListView = (ListView) findViewById(R.id.list_main);mAdapter = new TestAdapter(this, mDatas,R.layout.item_1);mListView.setAdapter(mAdapter);}有興趣學習可以加入QQ群372647271 IsCoding工作室一起探討
源碼下載
著作權聲明:本文為博主原創文章,轉載請註明出處。 部落格地址:http://blog.csdn.net/androidiscoding