下面介绍下SimpleAdapter的相关知识

以下是官方网上对SimpleAdapter的介绍:

An easy adapter to map static data to views defined in an XML file. You can specify the data backing the list as an ArrayList of Maps. Each entry in the ArrayList corresponds to one row in the list. The Maps contain the data for each row. You also specify an XML file that defines the views used to display the row, and a mapping from keys in the Map to specific views.

Binding data to views occurs in two phases.

First, if a SimpleAdapter.ViewBinder is available, setViewValue(android.view.View, Object, String) is invoked.

If the returned value is true, binding has occurred.

If the returned value is false, the following views are then tried in order:
(1)A view that implements Checkable (e.g. CheckBox). The expected bind value is a boolean.
(2)TextView. The expected bind value is a string and setViewText(TextView, String) is invoked.
(3)ImageView. The expected bind value is a resource id or a string and setViewImage(ImageView, int) or setViewImage(ImageView, String) is invoked.
If no appropriate binding can be found, an IllegalStateException is thrown.

(大概中文解释:适配器,将静态数据映射到在xml文件中定义的视图上,指定数据列表。每个ArrayList中得一项对应在ListView中的一行。你能自定一个Layout布局文件通过关键字映射来显示数据。

绑定数据分为两个阶段:

首先,如果一个SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)将被调用;

否则,如果返回失败,则会尝试以下的几个步骤。。。。。)


上代码

package com.potato;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class ListViewSimpleAdapterDemoActivity extends ListActivity{private String[]mListTitleStr= { "姓名", "性别", "年龄", "居住地" };private String[]mListStr= { "GeXiao", "male","secret", "北京" };public ListViewmListView= null;ArrayList<Map<String, Object>>mDataArrList= new ArrayList<Map<String, Object>>();;public SimpleAdapter mAdapter;/** Called when the activity is first created. */@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// 获取ListViewmListView = getListView();// 注1// 数据int lengh = mListTitleStr.length;for (int i = 0; i < lengh; i++){Map<String, Object> item = new HashMap<String, Object>();item.put("user_state", R.drawable.ic_launcher);item.put("title", mListTitleStr[i]);item.put("text", mListStr[i]);item.put("user", R.drawable.ic_launcher);mDataArrList.add(item);}// ListView与数据相连接mAdapter = new SimpleAdapter(this, mDataArrList,R.layout.list_item, new String[] { "user_state", "title", "text" , "user"}, new int[] { R.id.img_status, R.id.tv_name, R.id.tv_phone_number, R.id.img_user });  // 注2setListAdapter(mAdapter);// listview的item的点击事件响应mListView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> adapterView, View view,int position, long id){// 获取点击的View// 注3View view1 = ListViewSimpleAdapterDemoActivity.this.mAdapter.getDropDownView(position, null, null);Toast toast = new Toast(ListViewSimpleAdapterDemoActivity.this);toast.setView(view1);toast.show();}});}}

注2:

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列获取的值。

注3:

显示数据,通过getDropDownView获取要显示的数据。。。。

View view1 = ListViewSimpleAdapterDemoActivity.this.mAdapter.getDropDownView(position, null, null);


list_item.xml(ListView每个Item显示布局)

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="wrap_content"android:background="#FFFFFF"><ImageView     android:id="@+id/img_status"android:layout_width="wrap_content" android:layout_height="fill_parent"android:adjustViewBounds="true"android:padding="2dip" /><TextView     android:id="@+id/tv_name"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:gravity="top"    android:textStyle="bold"    android:textSize="20px"    android:layout_toRightOf="@id/img_status"    android:padding="2px"    android:singleLine="true"/><TextView     android:id="@+id/tv_phone_number"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:gravity="top"    android:textStyle="bold"    android:textSize="20px"    android:textColor="#000000"    android:layout_toLeftOf="@+id/img_user"    android:layout_alignParentBottom="true"    android:padding="2px"    android:singleLine="true"/><ImageView android:id="@id/img_user"android:layout_width="wrap_content" android:layout_height="fill_parent"android:layout_alignParentTop="true" android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:adjustViewBounds="true"android:padding="2dip" /></RelativeLayout>

有问题请留言。。。谢谢。。。

联系方式:ligexiao@gmail.com

更多相关文章

  1. Android(安卓)实现自定义Toast工具类
  2. Android自定义底部显示对话框
  3. android中fragment的显示和隐藏
  4. Android(安卓)如何简单的实现【轮播图 】— ViewPager + PagerAd
  5. android 中让activity全屏幕显示
  6. android adb 读写模式 挂载文件系统
  7. Android(安卓)ImageView的scaleType & setScaleType
  8. Android(安卓)SQLite数据库解析并使用两种方法实现增删改查
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. 下载android 源码
  2. Android(安卓)频道管理仿今日头条
  3. android 平台上SQLite3中文乱码 --我的小
  4. ECLIPSE android 布局页面文件出错故障排
  5. android实现瀑布流加载图片
  6. Android内置颜色及其它颜色RGB对照表
  7. cocos2dx的学习
  8. Android程序开发初级教程(三)
  9. android adb 获取所有app 的uid
  10. Android(安卓)root的两种方法-udev漏洞和