Android基礎——快速開發之打造萬能適配器

來源:互聯網
上載者:User

標籤:convert   blank   https   log   適配   roi   學生   dao   簡單   

這裡以ListView作示範,對於ListView我們再熟悉不過了,其步驟分為:

  • 建立ListView的Bean對象
  • 建立ListView的Adapter的ItemView布局
  • 建立ListView的Adaoter(**重點)
  • 對ListView設定Adapter

一、建立ListView的Bean對象

這裡以學生資訊為例

二、建立ListView的Adapter的ItemView布局

其最終效果為

三、建立ListView的Adaoter

這裡採用官網的Adapter推薦寫法,【你可以發現:Adapter緩衝的只是每個ItemView的ViewHolder】

如果我們需要填充ItemView很多,那麼getView()方法裡面的代碼會變得臃腫,難以閱讀和修改,那我們就來美化一下代碼吧

四、對ListView設定Adapter

容我一個強迫症的人先把這一點寫完

這裡我們就只看Adapter的代碼美化,具體看getView()這個方法裡面的內容,前面說了,Adapter緩衝的只是ViewHolder,那麼我們抽取這個ViewHolder

我們將中間的getView()裡的findViewById()和convertView.setTag()抽取出來,如果要添加新的View,只需要在ViewHolder類中添加即可,我們可以看到不管對View添加多少,在getView()方法中只需要一句話,ViewHolder viewHolder=getViewHolder(convertView)

從上面的程式碼分析,在我們萬能的ViewHolder類需要做什麼:

  • convertView緩衝的是ViewHolder(所以我們需要一個convertView,作為ViewHolder的屬性)
  • getViewHolder的代碼固定的(所以我們需要提供一個getViewHolder()方法將其鎖死)
  • findViewById每次增加View的時候都要執行(所以我們需要抽象一個方法來getView())

下面我們建立一個ViewHolder類(ViewHolder簡單的理解為View的管理器)

ViewHolder類做了兩件事情:

  • getViewHolder()拿到這個ViewHolder對象
  • 通過viewHolder.getView()方法來對View進行填充資料

萬能Adapter很簡單,就是在類裡面用泛型T表示傳進來的Bean對象,剩下的就是調用ViewHolder的事情

我們知道ViewHolder只是做了兩件事情,那麼我們就可以在Adapter中,雅思考試報名費調用這兩件事情

我們看到getView()裡的代碼還是很多,不美觀,根據物件導向的思想,我們可以將其抽取為一個抽象方法,讓我們的前台去填充這個View

這個時候getView()裡面的代碼就只剩下一句話了

傳統的使用:

萬能Adapter的使用:

  • 兩者比較有好有壞,傳統的前台代碼簡潔,而萬能適配器的代碼臃腫,不過萬能適配器可以適配各種ListView和GridView
  • 如果不明白的話,將萬能適配器代碼調用,一層一層的往回拼湊,最後執行的代碼順序還是和官網推薦的一樣,只不過他用泛型T來讓所有對象都適用  

Android基礎——快速開發之打造萬能適配器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.