Android SimpleAdapter 的详解和使用
来源:互联网 发布:java与php的优缺点 编辑:程序博客网 时间:2024/06/05 00:41
看其他代码看的我脑袋疼,还是转身来研究研究Android的东西吧,换换脑子。
这次就来研究研究SimpleAdapter吧,还是老规矩,先从API说起吧。
类的介绍:
public class SimpleAdapter extends BaseAdapter implements Filterable {}
这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。你可以指定数据支持的列表如ArrayList组成的Map。在ArrayList中的每个条目对应List中的一行。Maps包含每行数据。你可以指定一个定义了被用于显示行的视图XML文件,通过关键字映射到指定的视图。绑定数据到视图分两个阶段,首先,如果一个SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)将被调用。如果返回值是真,绑定完成了。如果返回值为假,下面的视图将按以下顺序去处理:
l一个实现了Checkable的视图(例如CheckBox),期望绑定值是一个布尔类型。
lTextView期望绑定值是一个字符串类型,通过调用setViewText(TextView, String)绑定。
lImageView期望绑定值是一个资源id或者一个字符串,通过调用setViewImage(ImageView, int) 或setViewImage(ImageView, String)。
如果没有一个合适的绑定发生将会抛出IllegalStateException。
public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
mData = data;
mResource = mDropDownResource = resource;
mFrom = from;
mTo = to;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
参数
context 关联SimpleAdapter运行着的视图的上下文。
data 一个Map的列表。在列表中的每个条目对应列表中的一行,应该包含所有在from中指定的条目
resource 一个定义列表项目的视图布局的资唯一标识。布局文件将至少应包含哪些在to中定义了的名称。
from 一个将被添加到Map上关联每一个项目的列名称的列表
to 应该在参数from显示列的视图。这些应该全是TextView。在列表中最初的N视图是从参数from中最初的N列获取的值。
方法:继承了BaseAdapter可调用所有Baseadapter的方法,不懂得同学可以看我之前写的关于Baseadapter的使用。下面列举一些BaseAdapter不存在的方法。
public SimpleAdapter.ViewBinder getViewBinder()
返回被用来绑定数据到视图的SimpleAdapter.ViewBinder
。
返回值
一个ViewBinder ,如果binder不存在则返回null
参见
setViewBinder(android.widget.SimpleAdapter.ViewBinder)
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的文本
好了,文档就介绍到这里,下面开始实例吧。
主布局文件:
<ListView android:id="@+id/lvcsdn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/spinner1" > </ListView>listview item 布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tvcslayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="SimpleAdapter测试" android:textSize="18sp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试" /> <ImageView android:id="@+id/ivsimple" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /></LinearLayout>
接下来是测试的activity
public class SimpleAdapterActivity extends Activity{private String[] names={"张三","李四","王五","赵六"};private int[] imageids={R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView lv=(ListView) findViewById(R.id.lvcsdn);List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();for(int i=0;i<names.length;i++){Map<String,Object> map=new HashMap<String, Object>();map.put("name", names[i]);map.put("image", imageids[i]);list.add(map);}SimpleAdapter adapter=new SimpleAdapter(this, list, R.layout.csarrayada, new String[]{"name","image"},new int[]{R.id.tvcslayout,R.id.ivsimple} );lv.setAdapter(adapter);}}
无图无真相,接下来上一下测试的实图:
至此,SimpleAdapter 的简单使用就完成了。
- Android SimpleAdapter 的详解和使用
- SimpleAdapter 和 ArrayAdapter使用详解
- [Android开发]SimpleAdapter的使用
- Android之SimpleAdapter的使用
- Android的 SimpleAdapter和SimpleCursorAdapter
- SimpleAdapter 和 SimpleCursorAdapter的使用
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter详解
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter详解
- Android 中 ListAactivity 和Activity 使用ListView 以及ArrayAdapter和SimpleAdapter参数详解
- Android SimpleAdapter源码详解
- Android SimpleAdapter源码详解
- android-SimpleAdapter详解
- Android中SimpleAdapter详解
- SimpleAdapter详解使用
- 使用详解及源码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter
- 使用详解及源码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter
- 使用详解及源码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter
- ArrayAdapter和SimpleAdapter详解
- Android Studio美化之优雅的logcat
- 杭电acm2107
- servlet 生成验证图片
- Android背后的设计思想——功能共享机制
- C51中 Putchar、 _getkey(void)的替换
- Android SimpleAdapter 的详解和使用
- ALV 导出报表数据
- Nginx架构
- 杭电acm--2187
- 创建Filter步骤
- UISegmentControl 字体加粗
- 使用回调方法在adapter 更新activtiy 数据
- js让对象延迟500毫秒后显示文本在点击的位置
- 为ListView子视图添加动画