Android中的Adapter分析

2021-07-29 09:32:43 字數 2675 閱讀 1366

adapter使資料繫結到控制項變得更加簡單和靈活。

用途:為容器提供子檢視,利用檢視的資料和元資料來構建每個子檢視,arrayadapter、******cursoradapter、resourcecursoradapter。

如果需要自定義介面卡,可以擴充套件抽象類baseadapter。adapter是資料ui之間的橋梁,它把後台資料與前段ui連線到一起,是乙個展示資料的載體。

android中常見的adapter

baseadapter:

基礎介面卡,android baseadapter實現了listadapter和spinneradapter的介面,gridview的介面卡有實現了listadapter,所以,baseadapter對於spinner、listadapter、gridview是通用的。baseadapter是乙個抽象類,繼承它的類要實現很多方法。

arrayadapter:

arrayadapter是baseadapter的之類,從baseadapter派生出來,它有baseadapter的所有功能。但是,arrayadapter可以直接使用泛型結構。arrayadapter比較簡單,只能顯示一行文字。細節會在後面說。

******adapter:

簡單介面卡,可以將

靜態資料

對映到xml檔案定義好的布局中。利用******adapter可以顯示比較複雜的列表,比如,每行顯示一些、文字啊等一些複雜/特殊效果,但它只是單純的顯示,若要在後期隊列表進行修改,則不可以。******adapter具有最後的擴充性。

******cursoradapter:

******cursoradapter是乙個專門用於

將資料庫表中的資料顯示在ui元件中(eg,listview)。在android中一些普通的adaper物件也可以將資料庫中的資料顯示在介面上,但用普通的adapter工作量要大很多。******cursoradapter使用中主要是將cursor的字段與ui的id對應起來。******cursoradapter和arrayadapter使用上非常相似,可把******adapter理解為對資料庫的一種簡單結合,然後方便的把資料庫中的內容以列表的形式展示出來。

用arrayadapter做乙個在listview中顯示文字的案例,非常簡單,只顯示一行文字:

//注意,android中建立listview有兩種方式

1、在layout布局檔案中定義listview控制項

2、直接讓你的activity繼承listactivity

這裡,我直接採用繼承listactivity來實現。

1.建立乙個android專案(本例中命名arrayadaptertest)

2. 2.在你的activity中的oncreate方法中開始構建乙個listview(這裡是關鍵一步),關鍵**如下:

public class  arrayadapteractivity extends listactivity;

//構建一陣列介面卡,然後把上面定義的陣列放到該介面卡中

arrayadapteradapter = new

arrayadapter(this,android.r.layout.******_list_item_multiple_choice, arr);

// 設定該視窗顯示列表

setlistadapter(adapter); 

}}      

使用new arrayadapter(context, resource, textviewresourceid)來連線listview檢視和陣列資料,這三個引數分別表示=》context=》上下文,即所在activity   resource=》android中內建的乙個布局樣式,控制listview以什麼形式顯示,根據需要選擇.(注意它是系統定義好的,只顯示一行文字)

textviewresourceid=》第三個引數就是資料來源,要顯示在listview上的資料(即本例中定義的string陣列)

下面說說******cursoradapter:

簡單的說就是

方便把cursor中得到的資料進行列表顯示,並可以把指定的列對映到指定的textview上。

import android.database.cursor;  

import android.os.bundle;  

import android.provider.contacts.people;  

import android.widget.listview;  

import android.widget.******cursoradapter;

/**  

*  *

@author shangzhenxiang   *

*/public class test******cursoradapter extends activity 

}mcursor = getcontentresolver().query(people.content_uri, null, null, null, null);是先獲得乙個指向系統聯絡人的cursor

startmanagingcursor(mcursor);是指我們把cursor交給這個activity保管,這樣cursor便會和activity同步,我們不用手動管理了。

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物...