?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
SimpleAdapter
翻譯時間:2010-11-03
版本:Android 2.2 r1
?
結(jié)構(gòu)
繼承關(guān)系
public interface SimpleAdapter extends Adapter
????????
???????? java.lang.Object
???????? ???????? android.widget.BaseAdapter
android.widget.SimpleAdapter
?
類概述
這是一個簡單的適配器,可以將靜態(tài)數(shù)據(jù)映射到XML文件中定義好的視圖。你可以指定數(shù)據(jù)支持的列表如ArrayList組成的Map。在ArrayList中的每個條目對應(yīng)List中的一行。Maps包含每行數(shù)據(jù)。你可以指定一個定義了被用于顯示行的視圖XML文件,通過關(guān)鍵字映射到指定的視圖。綁定數(shù)據(jù)到視圖分兩個階段,首先,如果一個SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)將被調(diào)用。如果返回值是真,綁定完成了。如果返回值為假,下面的視圖將按以下順序去處理:
l? 一個實現(xiàn)了Checkable的視圖(例如CheckBox),期望綁定值是一個布爾類型。
l? TextView期望綁定值是一個字符串類型,通過調(diào)用setViewText(TextView, String)綁定。
l? ImageView期望綁定值是一個資源id或者一個字符串,通過調(diào)用setViewImage(ImageView, int) 或 setViewImage(ImageView, String)。
如果沒有一個合適的綁定發(fā)生將會拋出IllegalStateException。
?
構(gòu)造函數(shù)
public SimpleAdapter (Context context, List<??extends?Map<String,??>> data, int resource, String[] from, int[] to)
?????? 構(gòu)造函數(shù)
參數(shù)
?????? context?? 關(guān)聯(lián)SimpleAdapter運行著的視圖的上下文。
data??????? 一個Map的列表。在列表中的每個條目對應(yīng)列表中的一行,應(yīng)該包含所有在from中指定的條目
resource????????????? 一個定義列表項目的視圖布局的資源唯一標(biāo)識。布局文件將至少應(yīng)包含哪些在to中定義了的名稱。
from?????? 一個將被添加到Map上關(guān)聯(lián)每一個項目的列名稱的列表
to??? 應(yīng)該在參數(shù)from顯示列的視圖。這些應(yīng)該全是TextView。在列表中最初的N視圖是從參數(shù)from中最初的N列獲取的值。
?
公共方法
public int getCount ()
獲取數(shù)據(jù)集中記錄總行數(shù)
?
public View getDropDownView (int position, View convertView, ViewGroup parent)
獲得一個在指定位置上顯示下拉彈出數(shù)據(jù)的視圖。
參數(shù)
position???????? 想得到項目視圖的索引
convertView? 如果可能舊有的視圖重新使用。注解:在使用之前應(yīng)該檢查這個視圖不是空的并且類型合適。如果轉(zhuǎn)換視圖顯示正確的數(shù)據(jù)是不可能的,這個方法能夠創(chuàng)建一個新的視圖
parent?????????? 視圖最終將依附的父對象
返回值
一個對應(yīng)指定位置的數(shù)據(jù)的視圖。
?
public Filter getFilter ()
返回一個可以通過一種過濾模式來約束數(shù)據(jù)的過濾器。
這個方法通常被Adapter類實現(xiàn)。
?????? 返回值
一個用于約束數(shù)據(jù)的過濾器
?
public abstract Object getItem (int position)
獲取數(shù)據(jù)集中指定位置上的數(shù)據(jù)項目
參數(shù)
position? 在adapter中我們想得到項目的位置。
????????????? 返回值
指定位置上的數(shù)據(jù)。
?
public abstract long getItemId (int position)
獲取數(shù)據(jù)集中指定位置上的行ID。
參數(shù)
position? 在adapter中我們想得到的行ID的項目的位置。
返回值
指定位置上的數(shù)據(jù)。
?
public abstract View getView (int position, View convertView, ViewGroup parent)
獲取一個顯示數(shù)據(jù)集中指定位置數(shù)據(jù)段視圖??梢允謩觿?chuàng)建視圖,或者從XML設(shè)計文件填充。當(dāng)視圖從XML設(shè)計文件填充時,父視圖(如GridView,ListView等)將接受默認(rèn)的設(shè)計參數(shù),除非使用inflate(int, android.view.ViewGroup, boolean)去指定一個根視圖和防止依附于根視圖。
參數(shù)
?????? position? 我們想要的在adapter中的數(shù)據(jù)項目的位置
convertView? 如果可能舊有的視圖重新使用。注解:在使用之前應(yīng)該檢查這個視圖不是空的并且類型合適。如果轉(zhuǎn)換視圖顯示正確的數(shù)據(jù)是不可能的,這個方法能夠創(chuàng)建一個新的視圖
parent??? 視圖最終將依附的父對象。
返回值
一個在指定位置上相應(yīng)的數(shù)據(jù)的視圖。
?
public SimpleAdapter.ViewBinder getViewBinder ()
返回被用來綁定數(shù)據(jù)到視圖的SimpleAdapter.ViewBinder
。
返回值
一個ViewBinder ,如果binder不存在則返回null
參見
setViewBinder(android.widget.SimpleAdapter.ViewBinder)
?
public void setDropDownViewResource (int resource)
設(shè)置創(chuàng)建下拉視圖的布局資源
參數(shù)
?????? resource?????? 定義下拉視圖的布局資源
參見
getDropDownView(int,
android.view.View, android.view.ViewGroup)
?
public void setViewBinder (SimpleAdapter.ViewBinder viewBinder)
設(shè)置binder用于綁定數(shù)據(jù)到視圖
參數(shù)
?????? viewBinder??? 用于綁定數(shù)據(jù)到視圖的binder可以設(shè)置為null,可用于刪除存在的binder
參見
getViewBinder()
?
public void setViewImage (ImageView v, int value)
調(diào)用bindView去給ImageView設(shè)置圖像,但只有當(dāng)ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個ImageView時才調(diào)用。如果提供的數(shù)據(jù)是一個整形時,setViewImage(ImageView, String)方法將被本方法替代
參數(shù)
????????????? v???? 接收圖像的ImageView
value????? 從數(shù)據(jù)集獲取數(shù)據(jù)到值
????????????? 參見
setViewImage(ImageView,
String)
?
public void setViewImage (ImageView v, String value)
調(diào)用bindView去給ImageView設(shè)置圖像,但只有當(dāng)ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個ImageView時才調(diào)用。默認(rèn)的,這個值被作為一個圖像資源來對待。如果這個值作為一個圖像的Uri來使用。如果提供的數(shù)據(jù)不是一個整形時,setViewImage(ImageView, int)方法將被本方法替代
參數(shù)
?????? v???? 接收圖像的ImageView
value????? 從數(shù)據(jù)集獲取數(shù)據(jù)到值
參見
setViewImage(ImageView, int)
?
public void setViewText (TextView v, String text)
調(diào)用bindView去給TextView設(shè)置文本,但只有當(dāng)ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個TextView時才調(diào)用
參數(shù)
?????? v???? 將接收文本的TextView
text 被設(shè)置到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"},
??????? new int[]{R.id.title,R.id.content,R.id.check,R.id.check1, R.id.image});
lv.setAdapter(sAdapter);