Android適配器之-----SimpleAdapter

來自:http://blog.csdn.net/zhengzhihao1/ 轉載請標明出處。

Android適配器之-----SimpleAdapter

結構

繼承關係

public interface SpinnerAdapter extends Adapter

        

         java.lang.Object

                  android.widget.BaseAdapter

android.widget. SpinnerAdapter

類概述

這是一個簡單的適配器,可以將靜態數據映射到XML文件中定義好的視圖。你可以指定數據支持的列表如ArrayList組成的Map。在ArrayList中的每個條目對應List中的一行。Maps包含每行數據。你可以指定一個定義了被用於顯示行的視圖XML文件,通過關鍵字映射到指定的視圖。綁定數據到視圖分兩個階段,首先,如果一個SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)將被調用。如果返回值是真,綁定完成了。如果返回值爲假,下面的視圖將按以下順序去處理:

l  一個實現了Checkable的視圖(例如CheckBox),期望綁定值是一個布爾類型。

l  TextView期望綁定值是一個字符串類型,通過調用setViewText(TextView, String)綁定。

l  ImageView期望綁定值是一個資源id或者一個字符串,通過調用setViewImage(ImageView, int) 或setViewImage(ImageView, String)。

如果沒有一個合適的綁定發生將會拋出IllegalStateException。

構造函數

public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

構造函數

參數

       context   關聯SimpleAdapter運行着的視圖的上下文。

data        一個Map的列表。在列表中的每個條目對應列表中的一行,應該包含所有在from中指定的條目

resource              一個定義列表項目的視圖佈局的資源唯一標識。佈局文件將至少應包含哪些在to中定義了的名稱。

from       一個將被添加到Map上關聯每一個項目的列名稱的列表

to    應該在參數from顯示列的視圖。這些應該全是TextView。在列表中最初的N視圖是從參數from中最初的N列獲取的值。

公共方法

public int getCount()

獲取數據集中記錄總行數

public View getDropDownView(int position, View convertView, ViewGroup parent)

獲得一個在指定位置上顯示下拉彈出數據的視圖。

參數

position         想得到項目視圖的索引

convertView  如果可能舊有的視圖重新使用。註解:在使用之前應該檢查這個視圖不是空的並且類型合適。如果轉換視圖顯示正確的數據是不可能的,這個方法能夠創建一個新的視圖

parent           視圖最終將依附的父對象

返回值

一個對應指定位置的數據的視圖。

public Filter getFilter()

返回一個可以通過一種過濾模式來約束數據的過濾器。

這個方法通常被Adapter類實現。

返回值

一個用於約束數據的過濾器

public abstract Object getItem(int position)

獲取數據集中指定位置上的數據項目

參數

position  在adapter中我們想得到項目的位置。

返回值

指定位置上的數據。

public abstract long getItemId(int position)

獲取數據集中指定位置上的行ID。

參數

position  在adapter中我們想得到的行ID的項目的位置。

返回值

指定位置上的數據。

public abstract View getView(int position, View convertView, ViewGroup parent)

獲取一個顯示數據集中指定位置數據段視圖。可以手動創建視圖,或者從XML設計文件填充。當視圖從XML設計文件填充時,父視圖(如GridView,ListView等)將接受默認的設計參數,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一個根視圖和防止依附於根視圖。

參數

       position  我們想要的在adapter中的數據項目的位置

convertView  如果可能舊有的視圖重新使用。註解:在使用之前應該檢查這個視圖不是空的並且類型合適。如果轉換視圖顯示正確的數據是不可能的,這個方法能夠創建一個新的視圖

parent    視圖最終將依附的父對象。

返回值

一個在指定位置上相應的數據的視圖。

public SimpleAdapter.ViewBinder getViewBinder()

返回被用來綁定數據到視圖的SimpleAdapter.ViewBinder

返回值

一個ViewBinder ,如果binder不存在則返回null

參見

setViewBinder(android.widget.SimpleAdapter.ViewBinder)

public void setDropDownViewResource(int resource)

設置創建下拉視圖的佈局資源

參數

       resource       定義下拉視圖的佈局資源

參見

getDropDownView(int, android.view.View, android.view.ViewGroup)

public void setViewBinder(SimpleAdapter.ViewBinder viewBinder)

設置binder用於綁定數據到視圖

參數

       viewBinder    用於綁定數據到視圖的binder可以設置爲null,可用於刪除存在的binder

參見

getViewBinder()

public void setViewImage(ImageView v, int value)

調用bindView去給ImageView設置圖像,但只有當ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個ImageView時才調用。如果提供的數據是一個整形時,setViewImage(ImageView, String)方法將被本方法替代

參數
              v     接收圖像的ImageView

value      從數據集獲取數據到值

參見

setViewImage(ImageView, String)

public void setViewImage(ImageView v, String value)

調用bindView去給ImageView設置圖像,但只有當ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個ImageView時才調用。默認的,這個值被作爲一個圖像資源來對待。如果這個值作爲一個圖像的Uri來使用。如果提供的數據不是一個整形時,setViewImage(ImageView, int)方法將被本方法替代

參數

       v     接收圖像的ImageView

value      從數據集獲取數據到值

參見

setViewImage(ImageView, int)

public void setViewText(TextView v, String text)

調用bindView去給TextView設置文本,但只有當ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個TextView時才調用

參數

       v     將接收文本的TextView

text 被設置到TextView的文本

補充

文章精選

簡約而不簡單——Android SimpleAdapter

android listview組件之ArrayAdapter,SimpleAdapter

Android用simpleAdapter來直接顯示BMP圖片(有ViewBinder用法)

示例代碼

                  

         private ListView lv;

private List<Map<String,String>> data;

private SimpleAdapter sAdapter;

lv = (ListView)findViewById(R.id.listview);    

data = new ArrayList<Map<String, Object>>();

for (int i = 0; i < 10; i++) {

            Map<String, Object> map = new HashMap<String, Object>();

            map.put("title""APPLE");

            map.put("content""can eat");

map.put("check"true);

map.put("check1", "true");

            map.put("image", R.drawable.icon);

data.add(map);

}

sAdapter = new SimpleAdapter(getApplicationContext(),

data,

               R.layout.item,

new String[]{"title","content","check","check1","image"},

newint[]{R.id.title,R.id.content,R.id.check,R.id.check1, R.id.image});

lv.setAdapter(sAdapter);

Android適配器之---SimpleCursorAdapter

結構

繼承關係

public class SimpleCusrorAdapter extends ResourceCusorAdpater

java.lang.Object

android.widget.BaseAdapter

         android.widget.CursorAdapter

                            android.widget.ResourceCusorAdapter

                                     android.widget.SimpleCusorAdapter

類概述

這是一個用起來很方便的適配器類,它主要將Cursor與TexiView或ImageView進行映射。比如,你想設定要展示三列,那麼當做好綁定之後,視圖就會展示你設定好的那些列;當然了,視圖的外觀是定義在XML文件裏面的,你只需用這個類與視圖做好綁定就可以了。與視圖綁定有兩個階段。第一階段:如果SimpleCursorAdapter.ViewBinder可用,將會調用setViewValue(android.view.View, android.database.Cursor, int)方法。該方法返回true就說明綁定成功,否則返回false ,這就到了第二階段,SimpleCursorAdapter內部開始自行綁定,過程是這樣的,若綁定到TextView上,調用setViewText();若綁定到ImageView上,調用setViewImage();如果視圖不是TextView或ImageView則拋出IllegalStateException異常。當使用帶有過濾器的適配器時,例如,在APIDemo中有個AutoCompleteTextView的例子,我們能使用SimpleCursorAdapter.CursorToStringConverter和接口         FilterQueryProvider來控制過濾過程。更多信息請參考convertToString(android.database.Cursor) 和runQueryOnBackgroundThread(CharSequence)

        

內部類

public interface SimpleCusorAdapter.ViewBinder        

         這個內部接口可以在外部通過SimpleCursorAdapter.ViewBinder的方式進行Cursor     與View的綁定。

public interface SimpleCusorAdapter.CursorToStringConverter

         這個內部接口可以在外部通過SimpleCursorAdapter.CursorToStringConverter的方式   定義怎樣將Cursor轉換成字符串。

構造函數

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

         構造函數啓動自動重新查詢(auto-requery)。

         這個構造器已被標記爲棄用(@Deprecated) 

該方法不推薦使用,Cursor查詢操作是執行在應用程序的UI線程當中,那麼會導致無響應的情況。另一種方式是使用LoaderManagerCursorLoader來進行。

         (譯者注:3.0已不推薦使用該構造方法)

                   參數

                            context  應用程序上下文,具體來說就是ListView所在的上下文當中。

layout       佈局文件的資源定位標識符,也就是說標識了ListView中的item。那麼這個佈局文件至少包含了參數“to”中的傳進來值。

                            c                 數據庫遊標,如果遊標不可用則爲null。

from                   列名字列表,表示着你要綁定到UI上的列。如果遊標不可用則爲null。

to               展示參數“from”中的列,也就是說ListView中的視圖顯示的是參數“from”的列值,這些視圖應該都是TextView。如果遊標不可用則爲null。

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[]      to,int flags)     

         該適配器類標準的構造函數。(譯者注:3.0新添的構造方法)

                   參數

                            context  應用程序上下文,具體來說就是ListView所在的上下文當中。

layout       佈局文件的資源定位標識符,也就是說標識了ListView中的item。那麼這個佈局文件至少包含了參數“to”中的傳進來值。

                            c                數據庫遊標,如果遊標不可用則爲null。

from                   列名字列表,表示着你要綁定到UI上的列。如果遊標不可用則爲null。

to               展示參數“from”中的列,也就是說ListView中的視圖顯示的是參數“from”的列值,這些視圖應該都是TextView。如果遊標不可用則爲null。

flags                   這個標誌用來決定該適配器的行爲。(譯者注:Android3.0推薦我們傳遞CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER。設置標誌用來添加一個監聽器,監聽着參數cursor的數據是否有更變。)

公共方法

public void bindView (View view, Context context, Cursor cursor)

         綁定所有構造函數中的參數from(字段名)一一綁定到參數to(視圖資源ID)。與視圖綁定有兩個階段。第一階段:如果SimpleCursorAdapter.ViewBinder可用,將會調用setViewValue(android.view.View, android.database.Cursor, int)方法。該方法返回true就說明綁定成功,否則返回false ,這就到了第二階段,SimpleCursorAdapter內部開始自行綁定,過程是這樣的,若綁定到TextView上,調用setViewText();若綁定到ImageView上,調用setViewImage();如果視圖不是TextView或ImageView則拋出IllegalStateException異常。

參數

                            view                 已存在的視圖(View)對象, 也就是早先new出來的。

                            context           應用程序上下文。

                            cursor               數據庫遊標。該遊標已經移動到指定位置上。

                   異常

                            IllegalStateException 如果綁定的視圖中不是TextView或是ImageView則會                           拋出這個異常。

                   參見

                   bindView(android.view.View, android.content.Context, android.database.Cursor)

                   getViewBinder()

                   setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

         setViewImage(ImageView, String)

                            setViewText(TextView, String)

public void changeCursorAndColumns(Cursor c, String[] from, int[] to)

         同時更改Cursor與View的映射關係。

參數

                            c                 數據庫遊標,如果遊標不可用則爲null。 

from                   列名字列表,表示着你要綁定到UI上的列。如果遊標不可用則爲null。

to               展示參數“from”中的列,也就是說ListView中的視圖顯示的是參數“from”的列值,這些視圖應該都是TextView。如果遊標不可用則爲null。

                           

public CharSequence convertToString (Cursor cursor)

通過CursorToStringConverter接口實現並返回一個CharSequence  類型的值,以表示指定的Cursor。如果沒有設置CursorToStringConverter,那麼就會用另外的方式進行轉換。如果列數爲-1,或者 cursor爲null返回空串,否則返回cursor.toString()。

                   參數

                            cursor               轉換爲CharSequence的數據庫遊標。

         返回值

                   返回一個不爲null的CharSequence類型來表示參數cursor。

public SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter ()

         返回自定義的SimpleCursorAdapter.CursorToStringConverter的實現。

返回值

                            如果沒有設置SimpleCursorAdapter.CursorToStringConverter,則爲null。

參考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public int getStringConversionColumn ()

         返回轉換成String類型的列位置。

返回值

                            返回列位置,如果沒有則返回-1。

參考

                            convertToString(android.database.Cursor)

                            setStringConversionColumn(int)

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

                            getCursorToStringConverter()

public SimpleCursorAdapter.ViewBinder getViewBinder ()

返回SimpleCursorAdapter.ViewBinder引用,這個ViewBinder用來將數據綁定到視圖上的。

返回值

                            如果ViewBinder不存在,則返回null。

參考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

public void setCursorToStringConverter (SimpleCursorAdapter.CursorToStringConverter cursorToStringConverter)

設置String轉換器。

                   參數

                            cursorToStringConverter  String轉換器,設置爲null就意味着移除。

                   參考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public void setStringConversionColumn (int stringConversionColumn)

設置Cursor中的列要轉換成String類型的位置。不過僅當未設置CursorToStringConverter時,這個列纔會進行默認轉換。

                   參數

                            stringConversionColumn  列位置,如果參數爲-1,則使用默認轉換機制。

                   參考

         convertToString(android.database.Cursor)

         getStringConversionColumn()

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getCursorToStringConverter()

public void setViewBinder (SimpleCursorAdapter.ViewBinder viewBinder)

設置視圖綁定器。

                   參數

                            viewBinder  視圖綁定器,可用爲null刪除現有的綁定器。

                   參考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         getViewBinder()

public void setViewImage (ImageView v, String value)

僅當ViewBinder不存在或是當ViewBinder不爲ImageView綁定時(也就是setViewValue()返回false),則這個方法會被bindView()調用,以便爲ImageView設置圖片。默認情況下,參數value作爲圖片資源ID來看待,否則,會視爲圖片的Uri。         另外還可以通過過濾器來獲得更靈活的設置。

                   參數

                            v                 圖片控件引用

                            value         圖片資源ID,是從Cursor獲取到的。

public void setViewText (TextView v, String text)

僅當ViewBinder不存在或是當ViewBinder不爲TextView綁定時(也就是setViewValue()返回false),則這個方法會被bindView()調用,以便爲TextView設置文本。可用重寫適配器從數據庫中檢索過濾字符串。

                   參數

                            v                 文本控件引用

                            value         爲文本控件設置的文本信息(譯者注:是從Cursor獲取到的)。

public Cursor swapCursor (Cursor c)

交換兩個Cursor的列以及它們的數據,並最終返回的還是舊的Cursor。不同於changeCursor(Cursor)的是,舊的Cursor非但不會關閉,而且還會返回出去。(譯者注:       3.0新添的方法)

                   參數

                            c  新的Cursor對象。

                   返回值

返回舊的Cursor引用,如果參數cursor不可用,則返回null。如果參數cursor與原來的Cursor引用相同,那麼也返回null。

補充

         文章精選

                   ArrayAdapter和SimpleCursorAdapter例子

                   Android API : SimpleCursorAdapter()

Android適配器之-----SimpleCursorTreeAdapter

結構

繼承關係

public abstract class SimpleCusrorTreeAdapter extends     

                                            ResourceCusorTreeAdpater

java.lang.Object

android.widget.BaseExpandableListAdapter

         android.widget.CursorTreeAdapter

                            android.widget.ResourceCusorTreeAdapter

                                     android.widget.SimpleCursorTreeAdapter

類概述

這是一個用起來很方便的適配器類,它主要將Cursor與在XML文件中定義的TextView或ImageView進行映射。比如,你想設定要展示三列,那麼當做好綁定之後,視圖就會展示你設定好的那些列;當然了,視圖的外觀是定義在XML文件裏面的,你只需用這個類與視圖做好綁定就可以了。(譯者注:Android推薦我們儘可能的將組視圖和子視圖分離開,也就是說不要把整體定義在一個佈局文件當中。)與視圖綁定有兩個階段。第一階段:如果使用SimpleCursorTreeAdapter.ViewBinder時,那麼就會調用setViewValue(android.view.View, android.database.Cursor, int)方法。該方法返回true就說明綁定成功,否則返回false,這就到了第二階段,SimpleCursorAdapter內部開始自行綁定,過程是這樣的,若綁定到TextView上,調用setViewText(TextView, String);若綁定到ImageView上,調用setViewImage(ImageView, String),如果視圖不是TextView或ImageView則拋出IllegalStateException異常。

內部類

public interface SimpleCursorTreeAdapter.ViewBinder

         這個內部接口可以在外部通過SimpleCursorTreeAdapter.ViewBinder的方式進行 Cursor與View的綁定。

構造函數

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int collapsedGroupLayout, int expandedGroupLayout, String[] groupFrom, int[] groupTo, int childLayout, int lastChildLayout, String[] childFrom, int[] childTo)

構造函數。

                   參數

                            context    上下文,多指ExpandableListView的上下文

                            cursor       數據庫遊標

collapsedGroupLayout     佈局資源文件標識ID,其定義的是收縮時的ExpandableListView佈局樣式,並且內部至少要包含參數“groupTo”中指定的視圖ID。

expandedGroupLayout    佈局資源文件標識ID,其定義的是展開時的ExpandableListView佈局樣式,並且內部至少要包含參數“groupTo”中指定的視圖ID。

                            groupFrom       列名列表,顯示ExpandableListView的組節點。

groupTo             展示參數“groupFrom”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “groupFrom”的列值,它們應該都是TextView或是ImageView。

childLayout       佈局資源文件標識ID,其定義的是子視圖的佈局樣式 (不包括最後一個子視圖),內部至少要包含參數 “childTo”中指定的視圖ID。lastChildLayout佈局資源文件標識ID,其定義的是最後一個子視圖的佈局樣式,內部至少要包含參數“childTo”中指定的視圖ID。

lastChildLayout        佈局資源文件標識ID,其定義的是最後一個子視圖的佈局樣式,內部至少要包含參數“childTo”中指定的視圖ID。lastChildLayout佈局資源文件標識ID,其定義的是最後一個子視圖的佈局樣式,內部至少要包含參數“childTo”中指定的視圖ID。

                            childFrom          列名列表,顯示ExpandableListView的子節點。

childTo               展示參數“childFrom ”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “childFrom  ”的列值,它們應該都是TextView或是ImageView。

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int collapsedGroupLayout, int expandedGroupLayout, String[] groupFrom, int[] groupTo, int childLayout, String[] childFrom, int[] childTo)

構造函數。(譯者注:該構造函數只是少了一個參數lastChildLayout)

         參數

context    上下文,多指ExpandableListView的上下文

                            cursor       數據庫遊標

collapsedGroupLayout     佈局資源文件標識ID,其定義的是收縮時的ExpandableListView佈局樣式,並且內部至少要包含參數“groupTo”中指定的視圖ID。

expandedGroupLayout    佈局資源文件標識ID,其定義的是展開時的ExpandableListView佈局樣式,並且內部至少要包含參數“groupTo”中指定的視圖ID。

                            groupFrom       列名列表,顯示ExpandableListView的組節點。

groupTo             展示參數“groupFrom”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “groupFrom”的列值,它們應該都是TextView或是ImageView。

childLayout       佈局資源文件標識ID,其定義的是子視圖的佈局樣式 (不包括最後一個子視圖),內部至少要包含參數 “childTo”中指定的視圖ID。lastChildLayout佈局資源文件標識ID,其定義的是最後一個子視圖的佈局樣式,內部至少要包含參數“childTo”中指定的視圖ID。

childFrom          列名列表,顯示ExpandableListView的子節點。

childTo               展示參數“childFrom ”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “childFrom  ”的列值,它們應該都是TextView或是ImageView。

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int groupLayout, String[] groupFrom, int[] groupTo, int childLayout, String[] childFrom, int[] childTo)

構造函數。

         參數

context    上下文,多指ExpandableListView的上下文

                            cursor       數據庫遊標

                   groupLayout  顯示組元素的資源文件。該資源文件定義瞭如何顯示組元素。該佈局文件必須至少包括groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

                            groupFrom       列名列表,顯示ExpandableListView的組節點。

groupTo             展示參數“groupFrom”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “groupFrom”的列值,它們應該都是TextView或是ImageView。

childLayout       佈局資源文件標識ID,其定義的是子視圖的佈局樣式 (不包括最後一個子視圖),內部至少要包含參數 “childTo”中指定的視圖ID。lastChildLayout佈局資源文件標識ID,其定義的是最後一個子視圖的佈局樣式,內部至少要包含參數“childTo”中指定的視圖ID。

childFrom          列名列表,顯示ExpandableListView的子節點。

childTo               展示參數“childFrom ”中的列,也就是說ExpandableListView中的視圖顯示的是參數 “childFrom  ”的列值,它們應該都是TextView或是ImageView。

公共方法

public SimpleCursorAdapter.ViewBinder getViewBinder ()

         返回SimpleCursorTreeAdapter.ViewBinder引用,這個ViewBinder用來將數據綁定到 視圖上的。

返回值

                            如果ViewBinder不存在,則返回null。

參考

         setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder)

public void setViewBinder (SimpleCursorTreeAdapter.ViewBinder viewBinder)

.        設置視圖綁定器。

                   參數

                            viewBinder  視圖綁定器。可以設置爲null來刪除已經存在的綁定器。

                   參考

         getViewBinder()

public void setViewText (TextView v, String text)

         僅當ViewBinder不存在或是當ViewBinder不爲TextView綁定時(也就是setViewValue()返回false),則這個方法會被bindView()調用,以便爲TextView設置文本。可重寫適配器從數據庫中檢索過濾字符串。

                   參數

                            v          文本控件引用

                            value      爲文本控件設置的文本信息(譯者注:是從Cursor獲取到的)。

受保護方法

protected void bindChildView (View view, Context context, Cursor cursor, boolean isExpanded)

         通過參數cursor將數據綁定到已有的子視圖上。。

                   參數

                            view                 已有視圖,返回之前調用newChildView創建的視圖。

                            context           應用程序上下文

                            cursor             用於獲取數據的Coursor。Coursor已經移到正確的位置。

                            isLastChild   子元素是否處於組中的最後一個

protected void bindGroupView (View view, Context context, Cursor cursor, boolean isExpanded)

         通過參數cursor將數據綁定到已有組視圖上。

                   參數                           

                            view                 已有組視圖,返回之前調用newGroupView創建的視圖。

                            context           應用程序上下文

                            cursor             用於獲取數據的Coursor。Coursor已經移到正確的位置。

                            isExpanded   組視圖是否呈展開狀態

protected void setViewImage (ImageView v, String value)

這個方法會被bindView()調用,以便爲ImageView設置圖片。默認情況下,參數value作爲圖片資源ID來看待,否則會視爲圖片的Uri。   另外還可以通過過濾器來獲得更靈活的設置。

                   參數

                            v          圖片控件引用

                            value  圖片資源ID,是從Cursor獲取到的。

補充

         文章精選

                   android播放器(music player)源碼分析2

Android適配器之-----SimpleExpandableListAdapter

結構

繼承關係

public abstract class SimpleExpandableListAdapter extends BaseExpandableListAdapter

java.lang.Object

android.widget.BaseExpandableListAdapter

         android.widget.SimpleExpandableListAdapter

類概述

一個使用Map存儲組元素和子元素的靜態數據,使用XML資源文件定義組元素和子元素View如何顯示的簡單適配器。你可以區分指定組元素返回的數據是List<Map>類型。在ArrayList中的每個實體對應ExpandalbeList中的一個組。實體中的Map列表包含了組下的每行數據。你也可以指定一個XML文件來定義用於在組元素的View的顯示。此時Map中的鍵值將與指定的View(XML中定義的view id)對應起來。子元素的處理情況類似。注意當可摺疊的深度若不只1層,返回的數據將被指定爲List類型。首個List對應子元素中所代表的組,第二個List對應孫子元素在子元素組中的位置。Map亦將支持這樣的特殊元素。(子元素嵌套組元素的情況)

(譯者注:ExpandableList支持深度大於1的情況。在andorid自帶的ApiDomos的例子中有這個的代碼:App/View/ExpandableList3)。

構造函數

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout,String[]childFrom, int[] childTo)

構造函數

參數

                   context        與SimpleExpandableListAdapter關聯的ExpandableListView的上下文。

                   groupData     一個Maps列表(List)。集合中的每個字典項與可摺疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,幷包含所有在"groupFrom"中指定的記錄。

                   groupLayout   顯示組元素的資源文件。該資源文件定義瞭如何顯示組元素。該佈局文件必須至少包括groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

                   groupFrom       一個鍵值列表。對應與組相關聯的Map中的鍵值。

                   grouptTo           組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。

                   childData       一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。

                   childLayout       顯示子元素的資源文件。該資源文件定義瞭如何顯示子元素。佈局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該佈局文件中找到)

                   childFrom        定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。

                   childTo      子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout,String[]childFrom, int[] childTo)

構造函數。

參數

                   context        與SimpleExpandableListAdapter關聯的ExpandableListView的上下文。

                   groupData     一個Maps列表(List)。集合中的每個字典項與可摺疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,幷包含所有在"groupFrom"中指定的記錄。

expandedGroupLayout           定義組展開時的View的XML資源佈局。該佈局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

collapasedGroupLayout            定義組摺疊時的View的XML資源佈局。該佈局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

                   groupFrom       一個鍵值列表。對應與組相關聯的Map中的鍵值。

                   grouptTo           組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。

                   childData         一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。

                   childLayout       顯示子元素的資源文件。該資源文件定義瞭如何顯示子元素。佈局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該佈局文件中找到)

                   childFrom        定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。

                   childTo      子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout, int lastChildLayout,String[]childFrom, int[] childTo)

構造函數。

參數

                   context        與SimpleExpandableListAdapter關聯的ExpandableListView的上下文。

                   groupData     一個Maps列表(List)。集合中的每個字典項與可摺疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,幷包含所有在"groupFrom"中指定的記錄。

expandedGroupLayout  定義組展開時的View的XML資源佈局。該佈局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

collapasedGroupLayout  定義組摺疊時的View的XML資源佈局。該佈局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該佈局文件中找到)

                   groupFrom       一個鍵值列表。對應與組相關聯的Map中的鍵值。

                   grouptTo  組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。

                   childData         一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。

                   childLayout       顯示子元素的資源文件。該資源文件定義瞭如何顯示子元素。佈局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該佈局文件中找到)

lastChildLayout  定義每組中最後一個子元素的View資源佈局情況。該佈局文件應當至少包括所有在childTo中所定義的View。(即childTo中的View id數組必須都在該佈局文件中找到)

                   childFrom        定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。

                   childTo        子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。

公共方法

publicObjectgetChild(int groupPosition, int childPosition)

public long getChildId (int groupPosition, int childPosition)

(譯者注:獲取與在給定組給予孩子相關的數據。)

publicView getChildView (int groupPosition, int childPosition, boolean isLastChild,ViewconvertView,ViewGroupparent)

(譯者注:獲取子項)

public int getChildrenCount (int groupPosition)

(譯者注:返回在指定GroupChild數目。)

publicObject getGroup (int groupPosition)

public int getGroupCount ()

(譯者注:返回Group的總數目。)

public long getGroupId (int groupPosition)

publicView getGroupView (int groupPosition, boolean isExpanded,ViewconvertView,ViewGroupparent)

(譯者注:獲取父項)

public boolean hasStableIds ()

public boolean isChildSelectable (int groupPosition, int childPosition)

(譯者注:是否child獲得焦點

publicView newChildView (boolean isLastChild,ViewGroupparent)

新建一個子元素View

        參數

            isLastChild   該child是否是組中的最後一個元素

            parent       新的View的最終父親。

        返回

            新的子元素View對象。

publicViewnewGroupView(boolean isExpanded,ViewGroupparent)

新建一個組元素View。

        參數

            isExpanded 該組元素是否當前處於摺疊狀態

            parent   新View的最終父親。

        返回

            新的組元素View對象。

補充

    文章精選

        ExpandableListActivity和SimpleExpandableListAdapter的使用方法

        Expandable lists[blogspot]

示例代碼:

        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();

        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

for (int i = 0; i < 20; i++) {

            Map<String, String> curGroupMap = new HashMap<String, String>();

            groupData.add(curGroupMap);

            curGroupMap.put(NAME"Group " + i);

            curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");

            List<Map<String, String>> children = new ArrayList<Map<String, String>>();

for (int j = 0; j < 15; j++) {

                Map<String, String> curChildMap = new HashMap<String, String>();

                children.add(curChildMap);

                curChildMap.put(NAME"Child " + j);

                curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");

            }

            childData.add(children);

        }

// Set up our adapter

mAdapter = new SimpleExpandableListAdapter(

this,

                groupData,

                android.R.layout.simple_expandable_list_item_1,

new String[] { NAMEIS_EVEN },

newint[] { android.R.id.text1, android.R.id.text2 },

                childData,

                android.R.layout.simple_expandable_list_item_2,

new String[] { NAMEIS_EVEN },

newint[] { android.R.id.text1, android.R.id.text2 }

                );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章