Adapter類的定義:

Adapter對象是AdapterView和底層數(shù)據(jù)見的橋梁。Adapter用于訪問數(shù)據(jù)項,并且負責(zé)為數(shù)據(jù)項生成視圖
AdapterView是一個抽象類,用于那些需要通過Adapter填充自身的視圖,其常見子類是ListView。顯示AdapterView時會調(diào)用Adapter的getView()方法創(chuàng)建并添加每個子條目的視圖。Adapter的getView()方法就是用來創(chuàng)建這些視圖的,Adapter并不會為每行數(shù)據(jù)都創(chuàng)建一個新視圖,而是提供了回收舊視圖的方法。運行機制簡單說就是當getView()方法被調(diào)用是,如果convertView參數(shù)不為null,就使用convertView,不用新建視圖,通過convertView.findViewById()方法獲取每個UI控件的引用,然后使用與當前項的位置綁定的數(shù)據(jù)來填充視圖
為了優(yōu)化,使用ViewHolder模式,ViewHolder是一個靜態(tài)類,可以用于保存每行的視圖以避免每次調(diào)用getView時都會調(diào)用findViewById()

public class Hack25Activity extends ListActivity {
private static final int MODEL_COUNT = 30;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ModelAdapter(this, 0, buildModels()));
}
private List<Model> buildModels() {
final ArrayList<Model> ret = new ArrayList<Model>(MODEL_COUNT);
for (int i = 0; i < MODEL_COUNT; i++) {
final Model model = new Model();
model.setImage(R.mipmap.ic_launcher);
model.setText1("Name " + i);
model.setText2("Description " + i);
ret.add(model);
}
return ret;
}
}
名稱欄目:Android通過ViewHolder優(yōu)化適配器的實現(xiàn)方法(必看)-創(chuàng)新互聯(lián)
文章地址:http://chinadenli.net/article48/gspep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、軟件開發(fā)、定制開發(fā)、面包屑導(dǎo)航、標簽優(yōu)化、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容