標籤: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基礎——快速開發之打造萬能適配器