选自: 1 : http://www.cnblogs.com/wservices/archive/2010/06/17/1759793.html
2 :[原创技术] 连载(12 ):SimpleCursorAdapter 类与数据绑定
3 : http://blog.sina.com.cn/s/blog_6213b4e50100lk9i.html
布局
LiveActivity 本身继承了关于 List 操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。
如果要用 ListActivity ,则 Activity 的 Layout 文件中必须包括一个(只能一个) ListView ,且 ListView id="@id/android:list" 。
如下代码,一个标准的 ListActivity Layout 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF0000"
android:text="No data"/>
</LinearLayout>
请注意 ListView 与 TextView 的 id 。前面说了, ListView 的 Id 为固定不变的,为” @./idandroid:ost ”, ListActivity 会根据 id 自动查找 ListView 引用;但如果当 ListView 中没有值而又想提示一句话时,那么用于指定显示提示信息的 TextView 的 id 必须为” "@id/android:empty" ,提示的信息可以通过 android:text 进行指定。
绑定
OK ,关于如何布局说完了,那么如何给 List 绑定值,并进行操作呢?
首先我们需要确实的是, ListView 的布局也完成了,并通过调用 setContentView( … ) 进行了绑定,但直到现在我们还没有确定 ListView 中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。
Android 系统为我们提供了多种模板进行选择 (android.R.layout) ,如
Simple_list_item_1 每项有一个 TextView
Simple_list_item_2 每项有两个 TextView
Simple_list_item_checked 带 CheckView 的项
Simple_list_item_multiple_choise 每项有一个 TextView 并可以多选
Simple_list_item_single_choice 每项有一个 TextView ,但只能进行单选。
但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个 layout 布局)。如果你做的 asp.net 的开发的话,是否对 dataList 控件有印象呢。如果对 DataList 有印象,那么理解 ListView 也就相当的简单了。
自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的 View ,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。
如何要对 ListView 进行数据绑定,必须使用到一个接口: Adapter 。
其中最经常与 ListView 进行配合使用的有 ArrayAdapter 、 CursorAdapter 及 SimpleAdapter 等。
从名称可以看出 ArrayAdapter 使用的是一个 ArrayAdapter 做为数据源, SimpleCursorAdapter 使用的是一个 Cursor 使用数据源,都比较容易理解,那么如何使用 SimpleAdapter 作为数据的适配器呢。 Ok ,从易到难。
ArrayAdapter:
ListView listView;
String[] data = { "Item1", "Item2",
"Item3", "Item4", "Item5" };
listView=(ListView)findViewById(R.id.lv);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, data));
SimpleCursorAdapter:
SimpleCursorAdapter 类构造方法的定义。
public SimpleCursorAdapter(Context context, intlayout, Cursor c, String[] from, int[] to)
在本节的例子中会通过 SimpleCursorAdapter 类将一个数据表绑定在 ListView 上,也就是说,该 ListView 会显示数据表的全部记录。在绑定数据之前,需要先编写一个 SQLiteOpenHelper 类的子类,用于操作数据库
见附件:
public class DBService extends SQLiteOpenHelper{}
由于本例不需要对 test.db 进行升级,因此,只有在 DBServie 类的 onCreate 方法中有创建数据表的代码。 DBService 类创建了一个 test.db 数据库文件,并在该文件中创建了 t_test 表。在该表中包含了两个字段: _id 和 name 。其中 _id 是自增字段,并且是主索引。
下面来编写 Main 类。在该类的 onCreate 方法中创建了 DBService 对象,然后通过 DBService 类的 query 方法查询出 t_test 表中的所有记录,并返回 Cursor 对象。见附件
public class Main extends Activity{}
SimpleCursorAdapter 类构造方法的第 4 个参数表示返回的 Cursor 对象中的字段名,而第 5 个参数表示要将该字段的值赋给哪个组件。该组件在第 2 个参数指定的布局文件中定义。
注意:在绑定数据时, Cursor 对象返回的记录集中必须包含一个叫“ _id ”的字段,否则将无法完成数据绑定。也就是说 SQL 语句不能是 select name from t_contacts 。如果在数据表中没有“ _id ”字段,可以采用其他的方法来处理。详细处理方法见本章的实例 39 。
小知识:数据库文件存到哪了?
光看到本节的例子建立了 SQLite 数据库文件,那么数据库文件被放到哪个目录了呢。如果使用 SQLiteOpenHelper 类的 getReadableDatabase 或 getWritableDatabase 方法获得 SQLiteDatabase 对象,那么系统会在手机内存的 /data/data/<packagename>/databases 目录中创建数据库文件。当然,使用这两个方法也只能打开这个目录中的数据库文件。
SimpleAdapter:
simpleAdapter 的构造函数 如下:
SimpleAdapter(Context context, List <? extends Map <String, ?>> data, int resource, String[] from, int[] to)
一个 SimlpleAdapter 是这个工作的。假设将 SimpleAdapter 用于 ListView 。那么 ListView 的每一个列表项就是 resource 参数值指定的布局。而 data 参数就是要加载到 ListView 中的数据。我们先看每一个列表项,假设列表项所对应的布局文件中包含了两个组件: TextView 和 EditText , id 分别为 textview 和 edittext 。那么在加载列表项时,需要通过组件的 id 和 data 参数中 List 元素中的 Map 对象对应。因此, from 参数 Map 对象的 key ,而 to 表示组件的 id ,例如,本例中的参数值为 from = new String[]{"textview", "edittext"} , to = new int[]{R.id.textview , R.id.edittext} 。意思就是将 Map 对象中 key 为 textview 的 value 绑定到 R.id.textview 上, edittext 也类似。
现在来看 data 参数,一个 ListView 由多个列表项组成。每一个列表项由一个 Map 对象提供数据,而多个列表项则由 List 对象提供多个 Map 对象。 OK ,就是这么简单,只要了解了它们的工作原理,一切就可以搞定。如果还不太明白,自己做个例子吧。 good luck !
这是我做的一个小例子,你如果有什么不明白可以做一下,就知道了。
见附件 simpleAdapter.xml 文件 ,TestSimpleAdapter
相关推荐
本篇将详细讲解ListView与ArrayAdapter、BaseAdapter、SimpleAdapter以及SimpleCursorAdapter的配合使用。 1. **ArrayAdapter** ArrayAdapter是最基础的适配器,它将Java对象数组或ArrayList与ListView进行关联。...
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter 其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter...
本篇文章将详细探讨Android中的Adapter用法及其在ListView中的应用。 1. **Adapter的概念** - `Adapter`是Android中一个核心的概念,它扮演着数据源与UI组件之间的桥梁角色。具体来说,Adapter负责将后端的数据...
本文将详细介绍`ListView`的基本概念、如何使用不同类型的适配器(如`ArrayAdapter`、`SimpleAdapter`和`SimpleCursorAdapter`),以及通过示例代码帮助理解`ListView`的具体应用。 #### 一、ListView 基础概念 `...
本篇文章将深入探讨如何在Android中编写ListView列表选项栏,包括使用系统默认的ListView以及自定义multiple ListView的方法。 首先,ListView的数据绑定通常通过适配器(Adapter)来实现。适配器主要有三种类型:...
本文档主要介绍了三种使用`ListView`的方式:使用`ArrayAdapter`、`SimpleAdapter`以及`SimpleCursorAdapter`来展示数据。 #### 二、使用 ArrayAdapter `ArrayAdapter`是最基础的一种适配器,主要用于展示简单的...
- Android提供了几种预定义的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - ArrayAdapter是最基础的适配器,适用于展示单一类型的文本数据。 - SimpleAdapter具有更好的扩展性,允许自定义...
- 在ArrayAdapter示例中,我们首先创建一个ListView实例,然后使用ArrayAdapter初始化它。ArrayAdapter的构造函数接受三个参数:上下文、行视图的资源ID以及数据源(这里是ArrayList)。 - android.R.layout....
以下是一个使用ArrayAdapter的简单示例: ```java public class MyListView extends Activity { private ListView listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate...
下面的示例展示了如何使用SimpleCursorAdapter从通讯录中读取联系人信息,并展示在ListView上。 1. **创建Activity**: ```java public class MyListView2 extends Activity { private ListView listView; @...
Android提供了几种内置的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - **ArrayAdapter**:是最简单的适配器,适用于显示单一类型的文本数据。在示例代码中,`new ArrayAdapter(this, android....
Listview Demo主要展示了ArrayAdapter、SimpleAdapter和SimpleCursorAdapter这三种适配器的基本用法。这三种适配器各自有不同的特性和应用场景,下面将详细介绍它们以及如何在实际项目中应用。 1. ArrayAdapter ...
通过以上示例,我们可以看到ListView在Android应用中的基本使用方式。适配器的选择取决于数据的来源和展示需求。ArrayAdapter适合简单的文本列表,SimpleAdapter适合复杂视图的定制,而SimpleCursorAdapter则方便...
本篇文章将深入探讨标题“简单的listview”所涵盖的ArrayAdapter、SimpleAdapter和SimpleCursorAdapter,以及如何在实际项目中使用它们。 首先,ArrayAdapter是最基础的适配器,它用于将Java对象数组与ListView绑定...
在Android中,常见的Adapter有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。ArrayAdapter是最基础的,适用于展示单一文本数据;SimpleAdapter则提供了更大的灵活性,可以用来映射复杂的数据结构;而...
接下来,我们将详细探讨`ListView`的基本概念、使用方法以及几种常见的适配器。 #### 一、ListView简介 `ListView`是一个可滚动的视图容器,用于显示数据列表。与`ScrollView`不同,`ListView`可以在数据变化时...
在示例的`MyListView2`活动中,我们从电话簿中获取Cursor对象,然后使用`SimpleCursorAdapter`创建一个适配器,将Cursor中的数据映射到自定义的XML布局上,实现联系人列表的展示。 在实际开发中,为了优化ListView...
本篇将详细讲解如何使用三种不同的Adapter来构建ListView,包括ArrayAdapter、SimpleAdapter和CursorAdapter。 首先,ArrayAdapter是最基础的Adapter,适用于简单的数据结构,如数组或ArrayList。使用ArrayAdapter...
根据适配器的类型,`ListView`主要可以分为三种形式:`ArrayAdapter`、`SimpleAdapter`以及`SimpleCursorAdapter`。 ##### 1. ArrayAdapter `ArrayAdapter`是最简单的一种适配器,主要用于展示单一的一行文本数据...