正文
一、结构
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<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,如需转载请自行联系原作者