`

android ListView及ArrayAdapter,SimpleCursorAdapter,SimpleAdapter用法示例

阅读更多

 

选自: 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配合使用实例。

    本篇将详细讲解ListView与ArrayAdapter、BaseAdapter、SimpleAdapter以及SimpleCursorAdapter的配合使用。 1. **ArrayAdapter** ArrayAdapter是最基础的适配器,它将Java对象数组或ArrayList与ListView进行关联。...

    Android_ListView用法

    根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter 其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter...

    Android listview与adapter用法

    本篇文章将详细探讨Android中的Adapter用法及其在ListView中的应用。 1. **Adapter的概念** - `Adapter`是Android中一个核心的概念,它扮演着数据源与UI组件之间的桥梁角色。具体来说,Adapter负责将后端的数据...

    Android ListView 详解 (文档)

    本文将详细介绍`ListView`的基本概念、如何使用不同类型的适配器(如`ArrayAdapter`、`SimpleAdapter`和`SimpleCursorAdapter`),以及通过示例代码帮助理解`ListView`的具体应用。 #### 一、ListView 基础概念 `...

    详解Android应用中ListView列表选项栏的编写方法

    本篇文章将深入探讨如何在Android中编写ListView列表选项栏,包括使用系统默认的ListView以及自定义multiple ListView的方法。 首先,ListView的数据绑定通常通过适配器(Adapter)来实现。适配器主要有三种类型:...

    android listview的几种用法

    本文档主要介绍了三种使用`ListView`的方式:使用`ArrayAdapter`、`SimpleAdapter`以及`SimpleCursorAdapter`来展示数据。 #### 二、使用 ArrayAdapter `ArrayAdapter`是最基础的一种适配器,主要用于展示简单的...

    androidListView详解.pdf

    - Android提供了几种预定义的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - ArrayAdapter是最基础的适配器,适用于展示单一类型的文本数据。 - SimpleAdapter具有更好的扩展性,允许自定义...

    Android中ListView的应用介绍

    - 在ArrayAdapter示例中,我们首先创建一个ListView实例,然后使用ArrayAdapter初始化它。ArrayAdapter的构造函数接受三个参数:上下文、行视图的资源ID以及数据源(这里是ArrayList)。 - android.R.layout....

    android ListView 详解

    以下是一个使用ArrayAdapter的简单示例: ```java public class MyListView extends Activity { private ListView listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate...

    android开发:listview详解.pdf

    下面的示例展示了如何使用SimpleCursorAdapter从通讯录中读取联系人信息,并展示在ListView上。 1. **创建Activity**: ```java public class MyListView2 extends Activity { private ListView listView; @...

    android_ListView详解

    Android提供了几种内置的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - **ArrayAdapter**:是最简单的适配器,适用于显示单一类型的文本数据。在示例代码中,`new ArrayAdapter(this, android....

    Listiview Demo

    Listview Demo主要展示了ArrayAdapter、SimpleAdapter和SimpleCursorAdapter这三种适配器的基本用法。这三种适配器各自有不同的特性和应用场景,下面将详细介绍它们以及如何在实际项目中应用。 1. ArrayAdapter ...

    ListView具体使用实例

    通过以上示例,我们可以看到ListView在Android应用中的基本使用方式。适配器的选择取决于数据的来源和展示需求。ArrayAdapter适合简单的文本列表,SimpleAdapter适合复杂视图的定制,而SimpleCursorAdapter则方便...

    简单的listview

    本篇文章将深入探讨标题“简单的listview”所涵盖的ArrayAdapter、SimpleAdapter和SimpleCursorAdapter,以及如何在实际项目中使用它们。 首先,ArrayAdapter是最基础的适配器,它用于将Java对象数组与ListView绑定...

    Android教学ListView详解[参照].pdf

    在Android中,常见的Adapter有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。ArrayAdapter是最基础的,适用于展示单一文本数据;SimpleAdapter则提供了更大的灵活性,可以用来映射复杂的数据结构;而...

    android ListView详解

    接下来,我们将详细探讨`ListView`的基本概念、使用方法以及几种常见的适配器。 #### 一、ListView简介 `ListView`是一个可滚动的视图容器,用于显示数据列表。与`ScrollView`不同,`ListView`可以在数据变化时...

    Android中Listview详解

    在示例的`MyListView2`活动中,我们从电话簿中获取Cursor对象,然后使用`SimpleCursorAdapter`创建一个适配器,将Cursor中的数据映射到自定义的XML布局上,实现联系人列表的展示。 在实际开发中,为了优化ListView...

    使用三种Adapter构建ListView

    本篇将详细讲解如何使用三种不同的Adapter来构建ListView,包括ArrayAdapter、SimpleAdapter和CursorAdapter。 首先,ArrayAdapter是最基础的Adapter,适用于简单的数据结构,如数组或ArrayList。使用ArrayAdapter...

    ListView详解

    根据适配器的类型,`ListView`主要可以分为三种形式:`ArrayAdapter`、`SimpleAdapter`以及`SimpleCursorAdapter`。 ##### 1. ArrayAdapter `ArrayAdapter`是最简单的一种适配器,主要用于展示单一的一行文本数据...

Global site tag (gtag.js) - Google Analytics