Android萬能適配器(二)封裝Adapter,androidadapter

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.