`
朱嘉华
  • 浏览: 238367 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Cursor 与 Adapter 应用

阅读更多

查询数据库均会把查询的结果包装在一个Cursor的子类对象中返回。Cursor就像是位于结果集之上的一个游标,可以对结果集进行向前、向后或随机的访问。而Cursor本身是一个接口类,提供了对结果集访问的一些抽象方法,根据功能的不同在其子类有着不同的实现。要控制查询时返回的Cursor类型,可以自定义一个继承自CursorFactory类通过实现其newCursor()方法来返回需要的Cursor子类对象,但在CursorFactory传入null的默认情况下,查询操作会返回一个指向第一行数据之前的SQLiteCursor的对象。

Cursor中常用的一些方法的介绍。

有关Cursor的常用方法

在实际的应用编写过程中,更多是通过适配器(Adapter)来将Cursor与适配器控件联系起来。AndroidCursor提供了一个抽象类CursorAdapter,可以方便实现Cursor与适配器的连接。只需要创建一个继承自CursorAdapter的类,实现其bindView()newView()两个抽象方法,或根据需要重新实现其他方法就可以用此类来构造一个可适配Cursor的适配器。下面是关于bindView()newView()两个抽象方法需要实现的内容。

·         public void bindView(View view, Context context, Cursor cursor)
重用一个已有的view,使其显示当前cursor所指向的数据。

·         public View newView(Context context, Cursor cursor, ViewGroup parent)
cursor所指向的数据新建一个View对象,并显示其数据。

另外还需要注意的是,传入到CursorAdapter中的Cursor结果集必须包含有列名为_id的列,否则CursorAdapter将不会起作用。

Adapter 的作用是什么,想必大家看了Android SDK中的原文就一目了然:
An Adapter object acts as a bridge between an
AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set.

已经介绍到了几种Android已经实现好了的适配器,其中SimpleCursorAdapter就是为Cursor对象专门实现的一种方便使用的适配器类,下面是对其构造方法传入参数的介绍:

public SimpleCursorAdapter (Context contex, int layout, Cursor c, String[]from, int[] to)

·         context,当前程序的上下文对象。

·         layout,用来描述如何显示在适配器控件上的布局文件的R类引用。

·         from,由需要显示出来的列名组成的字符串数组。

·         to,由layout所指定的布局文件中子控件的id所组成的整形数组,与from相对应。

综合前面的说明,举个具体例子如下:

变量以便在程序中引用:
TextView display;
Spinner s;

填充Spinner控件的代码:
s = (Spinner)findViewById(R.id.spinner);
display = (TextView)findViewById(R.id.display);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,
c,
new String[] { MyHelper.COUNTRY},
new int[] {android.R.id.text1});
adapter.
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.
setAdapter(adapter);
s.
setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapter,View v,int pos, long id)
{
c.moveToPosition(pos);
display.setText(c.getString(codeIndex));
}
public void onNothingSelected(AdapterView<?> arg0) {}
});

首先通过id分别获得TextViewSpinner对象的引用,然后使用之前查询返回的CursorAndroid 自带的Spinner子控件的布局构造一个SimpleCursorAdapter,再调用setDrop-DownViewResource()方法来设置点开Spinner后显示子控件的布局,最后设置Spinner的适配器为adapter并对其子控件被选取的事件设置一个监听器。需要注意的是Spinner不支持设置点击事件的监听器(OnClickListener),强行设置的话会抛出异常。最后程序运行的结果,如下图所示:

 

分享到:
评论

相关推荐

    Android listview与adapter用法

    - **SimpleCursorAdapter**:适用于简单的文本型ListView,它需要将Cursor(数据库查询结果)的字段与UI的ID对应起来,便于展示数据库内容。 3. **Adapter的应用案例** - 示例1:这个例子中,我们创建了一个...

    Android应用开发-Adapter的使用.pptx

    在Android应用开发中,Adapter扮演着至关重要的角色,它是数据和视图之间的纽带,使得数据能够适配并显示在各种用户界面组件上,如ListView、GridView等。Adapter的主要任务是将来自不同源的数据转化为可被UI组件...

    Adapter继承关系结构图

    在Android开发中,`Adapter`是一种非常重要的组件,主要用于将数据源中的数据与视图进行绑定,以实现列表或其他类型的视图控件的数据展示。对于Android开发者而言,理解`Adapter`的继承结构及其与相关接口的关系至关...

    Android App调试内存泄露之Cursor.zip

    5. **及时更新Adapter**:在ListView/RecyclerView与CursorAdapter配合时,当Cursor数据发生变化时,通过`swapCursor()`方法更新Adapter,而不是创建新的Adapter实例,确保旧的Cursor能够被正确关闭。 6. **避免...

    Android之Adapter用法总结

    根据提供的描述,我们可以看到 Adapter 在 Android 应用程序中的重要性。通常,数据、Adapter 和 View 三者之间的关系如下: 1. **数据** (Data): 存储或获取的数据,例如来自网络请求或本地数据库的信息。 2. **...

    Android Adapter的使用

    它将Cursor对象与ListView或其他视图关联,当Cursor中的数据改变时,视图会自动更新。 4. **RecyclerView.Adapter**:在Android Lollipop及以上版本中引入,用于替换ListView。RecyclerView更高效,支持更复杂的...

    Adapter放到ListView的三种方式

    Adapter是连接ListView与数据源的关键,它负责将数据转化为ListView可以显示的视图。本篇文章将详细探讨将Adapter放入ListView的三种常见方法,以帮助开发者更好地理解和应用。 ### 1. 直接继承BaseAdapter **描述...

    android(Adapter)适配器用法总结

    在实际应用中,我们需要根据不同的需求选择合适的 Adapter,并正确地使用它,以便开发出高效、可靠的应用程序。 在本文中,我们讨论了 Android 中的 Adapter 的种类和应用场景,并对每种 Adapter 的特点和优缺点...

    simple-database4-cursor-adapter:通过 SimpleCursorAdapter 在 ListView 上显示 SQLite 记录

    R.layout.list_item, // 布局资源ID,通常包含一个TextView或多个与fromColumns对应的视图 cursor, fromColumns, toViews, 0 // 没有附加标志 ); ListView listView = findViewById(R.id.list_view); ...

    Android_Adapter 讲解

    在Android开发中,Adapter是一个至关重要的组件,它作为数据与视图之间沟通的桥梁,使得数据能够被适配并展示在各种ViewGroup中,如ListView、GridView或Spinner等。Adapter的使用极大地简化了数据绑定的过程,让...

    android 使用之adapter大全

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据与视图之间的桥梁作用。这篇文章将深入探讨Android中的三种主要Adapter:BaseAdapter、SimpleAdapter和CursorAdapter的使用方法和应用场景。 首先,...

    SimpleCursorAdapter 数据库查询显示

    当Cursor移动到新的行时,Adapter会自动更新与`to`数组对应视图的内容,从而实现在ListView中显示数据库查询结果。 5. **绑定数据到ListView** 将SimpleCursorAdapter设置为ListView的Adapter,可以通过`ListView....

    6.Android界面编程(3补充)Adapter.pptx

    Android 界面编程中的 ...不同的 Adapter 都有其特点和优缺,选择合适的 Adapter 可以提高应用程序的性能和可读性。同时,Adapter 的设计和实现也需要考虑到应用程序的具体需求和限制,以便实现更加优雅的用户界面。

    Android应用源码获取数据库数据并动态显示在APP

    在Android应用开发中,从数据库获取数据并动态地展示在APP上是常见的需求。这个过程涉及到Android的SQLite数据库管理系统、Content Provider、CursorAdapter以及UI组件的交互。下面将详细讲解这些知识点。 首先,...

    android在异步任务中关闭Cursor的代码方法

    当我们从数据库查询数据并返回Cursor时,一个常见的做法是创建一个CursorAdapter,它将Cursor与ListView或其他视图组件关联起来。使用`Activity`的`managedQuery()`方法可以方便地管理Cursor的生命周期,因为它会在`...

    SQLite适配器使用

    它提供了简单的映射机制,将Cursor中的列名与视图中的控件关联。基本用法包括创建适配器、指定数据源(Cursor)、视图ID列表以及列名和控件映射。例如: ```java SimpleCursorAdapter adapter = new ...

    SqliteDatabase应用

    // 更新Adapter中的Cursor } @Override public void onLoaderReset(Loader&lt;Cursor&gt; loader) { adapter.swapCursor(null); // 清除旧的Cursor } }); ``` 以上就是使用`SqliteDatabase`创建和访问数据库,以及...

Global site tag (gtag.js) - Google Analytics