Adapter類的定義:
Adapter對(duì)象是AdapterView和底層數(shù)據(jù)見(jiàn)的橋梁。Adapter用于訪問(wèn)數(shù)據(jù)項(xiàng),并且負(fù)責(zé)為數(shù)據(jù)項(xiàng)生成視圖
AdapterView是一個(gè)抽象類,用于那些需要通過(guò)Adapter填充自身的視圖,其常見(jiàn)子類是ListView。顯示AdapterView時(shí)會(huì)調(diào)用Adapter的getView()方法創(chuàng)建并添加每個(gè)子條目的視圖。Adapter的getView()方法就是用來(lái)創(chuàng)建這些視圖的,Adapter并不會(huì)為每行數(shù)據(jù)都創(chuàng)建一個(gè)新視圖,而是提供了回收舊視圖的方法。運(yùn)行機(jī)制簡(jiǎn)單說(shuō)就是當(dāng)getView()方法被調(diào)用是,如果convertView參數(shù)不為null,就使用convertView,不用新建視圖,通過(guò)convertView.findViewById()方法獲取每個(gè)UI控件的引用,然后使用與當(dāng)前項(xiàng)的位置綁定的數(shù)據(jù)來(lái)填充視圖
為了優(yōu)化,使用ViewHolder模式,ViewHolder是一個(gè)靜態(tài)類,可以用于保存每行的視圖以避免每次調(diào)用getView時(shí)都會(huì)調(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通過(guò)ViewHolder優(yōu)化適配器的實(shí)現(xiàn)方法(必看)-創(chuàng)新互聯(lián)
文章地址:http://www.chinadenli.net/article48/gspep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、軟件開(kāi)發(fā)、定制開(kāi)發(fā)、面包屑導(dǎo)航、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容