Android 中文API (46) —— 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)將被調用。如果返回值是真,綁定完成了。如果返回值為假,下面的視圖將按以下順序去處理:
?一個實現了Checkable的視圖(例如CheckBox),期望綁定值是一個布爾類型。
?TextView期望綁定值是一個字符串類型,通過調用setViewText(TextView, String)綁定。
?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"},
????????new?int[]{R.id.title,R.id.content,R.id.check,R.id.check1,?R.id.image});
lv.setAdapter(sAdapter);
?本文轉自over140 51CTO博客,原文鏈接:http://blog.51cto.com/over140/582592,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Android 中文API (46) —— SimpleAdapter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一直使用管理员权限打开PowerShel
- 下一篇: HBuilder Android真机调试