天天看点

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,如需转载请自行联系原作者

继续阅读