Android中的Adapter 詳解(二)

2021-09-02 16:24:40 字數 2311 閱讀 6573

不論是那種介面卡模式,也不管是listview也好還是gridview也好,對他們填充資料,都是分三步走。

第一:建立乙個資料填充的物件,可以是listview, gridview, gallery。

listview=(listview) findviewbyid(r.id.listview_******);
例如:******adapter可以使用系統封裝好的,你也可以自己去繼承乙個******adapter,來重寫其中的方法。繼承 ******adapter的好處在於,你可以對listitem中每個單一的控制項設定監聽事件等等一系列操作。如果用的是系統封裝好的就有點愛莫能助了。

直接使用系統封裝的:

******adapter ******adapter = new ******adapter(        

this,

data,

r.layout.******_item,

new string ,

new int );

重寫系統的******adpter:

public class list******adpter extends ******adapter   

//item的總行數

@override

public int getcount()

//item物件

@override

public object getitem(int position)

//item的id

@override

public long getitemid(int position)

//繪製每乙個item

@override

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

holder.imageview.setimageresource(integer.parseint(data.get(position).get(from[0]).tostring()));

holder.title.settext(data.get(position).get(from[1]).tostring());

holder.content.settext(data.get(position).get(from[2]).tostring()); return convertview;

}

class holder

}

這裡對於adapter的優化,用的很古老的viewholder、viewcache辦法:

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

holder.imageview.setimageresource(integer.parseint(data.get(position).get(from[0]).tostring()));

holder.title.settext(data.get(position).get(from[1]).tostring());

holder.content.settext(data.get(position).get(from[2]).tostring()); return convertview;

}

class holder

或者使用hashmap做快取的方法:

hashmapm = new hashmapnteger, view="">();     

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

}

第三步:將資料填充到物件中去

listview.setadapter(******adapter);
這樣就完成了資料填充器的資料填充。

還有arrayadapter, baseadapter, cursoradapter, headerviewlistadapter, listadapter,

二級樹相關的******expandablelistadapter、baseexpandablelistadapter等等。

ListView 更高效的使用 Adapter

一 adapter adapter是listview和資料來源之間的中間人。當每條資料進入可見區時,adapter會呼叫他的getview 方法,並返回代表具體資料的檢視。滾動的時候頻繁呼叫,支援成千上萬的資料。最簡單的方法,最慢最不實用 public void getview int positi...

android開發中的

線性布局 linear layout 相對布局 relative layout 布局 table layout 網格檢視 grid view 標籤布局 tab layout 列表檢視 list view 絕對布局 absolutelayout 1.實現tab的效果必須使用tabhost控制項作為ta...

Android中的Message Pool實現

為了避免物件頻繁建立銷毀帶來的開銷,可以採用乙個pool來維護這些物件,物件使用後可重新放到pool中被重新使用。message是乙個被頻繁使用的物件,因此message提供了乙個message pool。下面是message pool的實現。obtain方法用來從pool中獲取乙個message物...