Adapter優化(二)通用ViewHolder

2021-07-11 21:45:00 字數 2446 閱讀 1572

//普通的viewholder類

class viewholder

通用的話,肯定不能具體那些元件了,所以我們用sparsearray存放元件,這個容器類似於map,但是效率更高,鍵只能是integer,所以k: id of view v: view。

再分析下getview()方法:

1、獲取乙個viewholder例項(convertview判空一起放進去封裝實現)

2、通過viewholder獲取元件

3、修改元件資訊

4、返回convertview(非空!)

//普通的getview()方法

public view getview(int position, view convertview, viewgroup parent) else

viewholder.title

.settext(datas.get(position).gettitle());

viewholder.content

.settext(datas.get(position).getcontent());

return convertview;

}

於是我們新的viewholder類要提供這麼幾個方法:

1、獲取viewholder例項(先判斷傳進convertview是否為空,是的話new乙個返回,否的話直接gettag()返回)(其中new是呼叫本類的私有構造方法)

2、通過id獲取view

3、修改元件資訊

4、獲取非空convertview

直接看**!

package com.example.barbara.commonadapterexample;

import android.content.context;

import android.util.sparsearray;

import android.view.layoutinflater;

import android.view.view;

import android.view.viewgroup;

import android.widget.imageview;

import android.widget.textview;

/** * 通用的viewholder

*/public

class

viewholder

/*** 獲取viewholder例項

*@param context

*@param parent

*@param layoutid

*@param position

*@param convertview

*@return

*/public

static viewholder getviewholder(context context, viewgroup parent, int layoutid,

int position, view convertview) else

}/**

* 通過id獲取view例項

*@param viewid

*@return

*/public

t getview (int viewid)

return (t)view;

}/**

* 獲取convertview

*@return

*/public view getconvertview ()

public

intgetposition ()

/*** 修改textview

*@param viewid

*@param text

*@return

*/public viewholder settext (int viewid, string text)

/*** 修改imageview

*@param viewid

*@param drawableid

*@return

*/public viewholder setimageresource(int viewid, int drawableid)

}

之後,我們的getview()方法是這樣寫的

三行,非常簡潔

/**

* 利用通用viewholder實現getview()

*@param position

*@param convertview

*@param parent

*@return

*/@override

public view getview(int position, view convertview, viewgroup parent)

C 程式設計思想 卷二 通用演算法

判定函式 例 只把數值1中滿足條件的值複製到陣列2中 remove copy if 演算法對輸入序列的每個元素都應用gt15 並且在向輸出序列寫入時忽略掉那些使判定函式產生真值的元素。流迭代器 例 輸出流迭代器 例 輸入流迭代器 remove copy if 的第1個引數,把乙個istream it...

Redis(二)通用命令 day 13上

keys 萬用字元 查詢所有滿足條件的key del key1 key2 key3 exists key rename keyname newkeyname expire key 設定過期時間 ttl key 檢視剩餘時間 1是永久,2是已經過期不存在 type key 返回value型別 ping...

13 通用二維陣列製造函式

題目 為程式make 2d array 編寫乙個通用型演算法,它的第三個引數不是整數 col number,而是一維陣列row size。它建立乙個二維陣列,第 i 行的列數是 row size i 思路 本題需要改變的是列數,也就是說,每行的元素個數可以不同,把這些元素個數儲存在陣列 row si...