查询数据库均会把查询的结果包装在一个Cursor的子类对象中返回。Cursor就像是位于结果集之上的一个游标,可以对结果集进行向前、向后或随机的访问。而Cursor本身是一个接口类,提供了对结果集访问的一些抽象方法,根据功能的不同在其子类有着不同的实现。要控制查询时返回的Cursor类型,可以自定义一个继承自CursorFactory类通过实现其newCursor()方法来返回需要的Cursor子类对象,但在CursorFactory传入null的默认情况下,查询操作会返回一个指向第一行数据之前的SQLiteCursor的对象。
对Cursor中常用的一些方法的介绍。
有关Cursor的常用方法
在实际的应用编写过程中,更多是通过适配器(Adapter)来将Cursor与适配器控件联系起来。Android为Cursor提供了一个抽象类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分别获得TextView和Spinner对象的引用,然后使用之前查询返回的Cursor和Android 自带的Spinner子控件的布局构造一个SimpleCursorAdapter,再调用setDrop-DownViewResource()方法来设置点开Spinner后显示子控件的布局,最后设置Spinner的适配器为adapter并对其子控件被选取的事件设置一个监听器。需要注意的是Spinner不支持设置点击事件的监听器(OnClickListener),强行设置的话会抛出异常。最后程序运行的结果,如下图所示:
分享到:
相关推荐
- **SimpleCursorAdapter**:适用于简单的文本型ListView,它需要将Cursor(数据库查询结果)的字段与UI的ID对应起来,便于展示数据库内容。 3. **Adapter的应用案例** - 示例1:这个例子中,我们创建了一个...
在Android应用开发中,Adapter扮演着至关重要的角色,它是数据和视图之间的纽带,使得数据能够适配并显示在各种用户界面组件上,如ListView、GridView等。Adapter的主要任务是将来自不同源的数据转化为可被UI组件...
在Android开发中,`Adapter`是一种非常重要的组件,主要用于将数据源中的数据与视图进行绑定,以实现列表或其他类型的视图控件的数据展示。对于Android开发者而言,理解`Adapter`的继承结构及其与相关接口的关系至关...
5. **及时更新Adapter**:在ListView/RecyclerView与CursorAdapter配合时,当Cursor数据发生变化时,通过`swapCursor()`方法更新Adapter,而不是创建新的Adapter实例,确保旧的Cursor能够被正确关闭。 6. **避免...
根据提供的描述,我们可以看到 Adapter 在 Android 应用程序中的重要性。通常,数据、Adapter 和 View 三者之间的关系如下: 1. **数据** (Data): 存储或获取的数据,例如来自网络请求或本地数据库的信息。 2. **...
它将Cursor对象与ListView或其他视图关联,当Cursor中的数据改变时,视图会自动更新。 4. **RecyclerView.Adapter**:在Android Lollipop及以上版本中引入,用于替换ListView。RecyclerView更高效,支持更复杂的...
Adapter是连接ListView与数据源的关键,它负责将数据转化为ListView可以显示的视图。本篇文章将详细探讨将Adapter放入ListView的三种常见方法,以帮助开发者更好地理解和应用。 ### 1. 直接继承BaseAdapter **描述...
在实际应用中,我们需要根据不同的需求选择合适的 Adapter,并正确地使用它,以便开发出高效、可靠的应用程序。 在本文中,我们讨论了 Android 中的 Adapter 的种类和应用场景,并对每种 Adapter 的特点和优缺点...
R.layout.list_item, // 布局资源ID,通常包含一个TextView或多个与fromColumns对应的视图 cursor, fromColumns, toViews, 0 // 没有附加标志 ); ListView listView = findViewById(R.id.list_view); ...
在Android开发中,Adapter是一个至关重要的组件,它作为数据与视图之间沟通的桥梁,使得数据能够被适配并展示在各种ViewGroup中,如ListView、GridView或Spinner等。Adapter的使用极大地简化了数据绑定的过程,让...
在Android开发中,Adapter是一个非常重要的组件,它起到了数据与视图之间的桥梁作用。这篇文章将深入探讨Android中的三种主要Adapter:BaseAdapter、SimpleAdapter和CursorAdapter的使用方法和应用场景。 首先,...
当Cursor移动到新的行时,Adapter会自动更新与`to`数组对应视图的内容,从而实现在ListView中显示数据库查询结果。 5. **绑定数据到ListView** 将SimpleCursorAdapter设置为ListView的Adapter,可以通过`ListView....
Android 界面编程中的 ...不同的 Adapter 都有其特点和优缺,选择合适的 Adapter 可以提高应用程序的性能和可读性。同时,Adapter 的设计和实现也需要考虑到应用程序的具体需求和限制,以便实现更加优雅的用户界面。
在Android应用开发中,从数据库获取数据并动态地展示在APP上是常见的需求。这个过程涉及到Android的SQLite数据库管理系统、Content Provider、CursorAdapter以及UI组件的交互。下面将详细讲解这些知识点。 首先,...
当我们从数据库查询数据并返回Cursor时,一个常见的做法是创建一个CursorAdapter,它将Cursor与ListView或其他视图组件关联起来。使用`Activity`的`managedQuery()`方法可以方便地管理Cursor的生命周期,因为它会在`...
它提供了简单的映射机制,将Cursor中的列名与视图中的控件关联。基本用法包括创建适配器、指定数据源(Cursor)、视图ID列表以及列名和控件映射。例如: ```java SimpleCursorAdapter adapter = new ...
// 更新Adapter中的Cursor } @Override public void onLoaderReset(Loader<Cursor> loader) { adapter.swapCursor(null); // 清除旧的Cursor } }); ``` 以上就是使用`SqliteDatabase`创建和访问数据库,以及...