天天看點

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。

  三、構造函數

        構造函數

參數

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

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

resource              一個定義清單項目的視圖布局的資源唯一辨別。布局檔案将至少應包含哪些在to中定義了的名稱。

from       一個将被添加到Map上關聯每一個項目的列名稱的清單

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

  四、公共方法

public int getCount ()

擷取資料集中記錄總行數

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

position         想得到項目視圖的索引

convertView 如果可能舊有的視圖重新使用。注解:在使用之前應該檢查這個視圖不是空的并且類型合适。如果轉換視圖顯示正确的資料是不可能的,這個方法能夠建立一個新的視圖

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

傳回值

一個對應指定位置的資料的視圖。

傳回一個可以通過一種過濾模式來限制資料的過濾器。

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

       傳回值

一個用于限制資料的過濾器

擷取資料集中指定位置上的資料項目

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

              傳回值

指定位置上的資料。

public abstract long getItemId (int position)

擷取資料集中指定位置上的行ID。

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

擷取一個顯示資料集中指定位置資料段視圖。可以手動建立視圖,或者從XML設計檔案填充。當視圖從XML設計檔案填充時,父視圖(如GridView,ListView等)将接受預設的設計參數,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一個根視圖和防止依附于根視圖。

       position 我們想要的在adapter中的資料項目的位置

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

一個在指定位置上相應的資料的視圖。

傳回被用來綁定資料到視圖的<code>SimpleAdapter.ViewBinder</code> 。

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

參見

public void setDropDownViewResource (int resource)

設定建立下拉視圖的布局資源

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

設定binder用于綁定資料到視圖

       viewBinder    用于綁定資料到視圖的binder可以設定為null,可用于删除存在的binder

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

              v     接收圖像的ImageView

value      從資料集擷取資料到值

              參見

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

       v     接收圖像的ImageView

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

       v     将接收文本的TextView

text 被設定到TextView的文本 

  五、補充

    文章精選

    示例代碼

private ListView lv;

    private List&lt;Map&lt;String,String&gt;&gt; data;

    private SimpleAdapter sAdapter;

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

data = new ArrayList&lt;Map&lt;String, Object&gt;&gt;();

    for (int i = 0; i &lt; 10; i++) {

            Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();

            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,如需轉載請自行聯系原作者

繼續閱讀