前言html
本章內容是 android.widget.SimpleAdapter,版本爲Android 2.2 r1,翻譯來自"德羅德",歡迎你們訪問他的博客:http://sparkrico.javaeye.com/,再次感謝"德羅德" !期待你一塊兒參與Android中文API的翻譯,聯繫我over140@gmail.com。
java
聲明android
歡迎轉載,但請保留文章原始出處:)
app
農民伯伯:http://over140.blog.51cto.com/ide
Android中文翻譯組:http://goo.gl/6vJQl
函數
正文佈局
1、結構spa
public interface SpinnerAdapter extends Adapter.net
java.lang.Object翻譯
android.widget.BaseAdapter
android.widget. SpinnerAdapter
2、概述
這是一個簡單的適配器,能夠將靜態數據映射到XML文件中定義好的視圖。你能夠指定數據支持的列表如ArrayList組成的Map。在ArrayList中的每一個條目對應List中的一行。Maps包含每行數據。你能夠指定一個定義了被用於顯示行的視圖XML文件,經過關鍵字映射到指定的視圖。綁定數據到視圖分兩個階段,首先,若是一個SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)將被調用。若是返回值是真,綁定完成了。若是返回值爲假,下面的視圖將按如下順序去處理:
一個實現了Checkable的視圖(例如CheckBox),指望綁定值是一個布爾類型。
TextView指望綁定值是一個字符串類型,經過調用setViewText(TextView, String)綁定。
ImageView指望綁定值是一個資源id或者一個字符串,經過調用setViewImage(ImageView, int) 或 setViewImage(ImageView, String)。
若是沒有一個合適的綁定發生將會拋出IllegalStateException。
3、構造函數
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列獲取的值。
4、公共方法
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
參見
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 從數據集獲取數據到值
參見
public void setViewText (TextView v, String text)
調用bindView去給TextView設置文本,但只有當ViewBinder不存在或者若是存在的ViewBinder沒法處理綁定到一個TextView時才調用
參數
v 將接收文本的TextView
text 被設置到TextView的文本
5、補充
文章精選
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("p_w_picpath", R.drawable.icon);
data.add(map);
}
sAdapter = new SimpleAdapter(getApplicationContext(),
data,
R.layout.item,
new String[]{"title","content","check","check1","p_w_picpath"},
new int[]{R.id.title,R.id.content,R.id.check,R.id.check1, R.id.p_w_picpath});
lv.setAdapter(sAdapter);
結束
Android2.3發佈在即,抓緊出合集,目前生成chm還有一點問題,徹底經過後開始全面採用javadoc格式的API文檔,敬請期待。