查询数据库均会把查询的结果包装在一个Cursor的子类对象中返回。Cursor就像是位于结果集之上的一个游标,可以对结果集进行向前、向后或随机的访问。而Cursor本身是一个接口类,提供了对结果集访问的一些抽象方法,根据功能的不同在其子类有着不同的实现。要控制查询时返回的Cursor类型,可以自定义一个继承自CursorFactory类通过实现其newCursor()方法来返回需要的Cursor子类对象,但在CursorFactory传入null的默认情况下,查询操作会返回一个指向第一行数据之前的SQLiteCursor的对象。
在实际的应用编写过程中,更多是通过适配器(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将不会起作用。
综合前面的说明,举个具体例子如下:
变量以便在程序中引用:
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),强行设置的话会抛出异常。
分享到:
相关推荐
Cursor
simple-database4-cursor-adapter 通过 SimpleCursorAdapter 在 ListView 上显示 SQLite 记录
android 使用 Cursor 访问数据库 生成 ListView 并获取选中项的值
Cursor.so是一款基于GPT的代码生成工具,它可以帮助开发者快速生成代码,提高开发效率。GPT是一种自然语言处理技术,可以根据输入的文本生成相应的文本。Cursor.so利用GPT技术,将开发者的自然语言描述转化为代码,...
全新代码编辑器 Cursor window版本0.1.11
Cursor 0.2.1安装包
matlab开发-cursor。生成轴十字线,允许用户单击点。
Cursor Setup 0.1.12-x64 Windows Cursor听闻是用chatGPT4来制作的软件,该软件可以帮助你写基础代码和代码的方案,也可以帮助你查找相关的代码函数
Cursor(游标)是Oracle数据库中一个特有的概念。本文档简单介绍了Cursor及其使用方法。
鼠标样式定义:cursor:鼠标样式定义,简单的介绍鼠标样式的定义
压缩包包含0.1.2 0.1.3 0.1.12 mac
全新代码编辑器 Cursor Linux版本0.1.11
本文简述了android的cursor的用法,通过本文你可以熟悉的掌握cursor的用法,通过实际的例程讲解
react-cursor is an opinionated javascript implementation of the Cursor concept first seen in Om, and inspired by functional zippers. 示例代码: var App = React.createClass({ getInitialState: ...
描述了在ArcObjects中Cursor的分类和使用,面对不同的数据来源,如ITable,FeatureClass,如果进行Insert,Update,Select操作
Cursor 是一款基于 AI 技术的代码生成工具,它可以帮助开发人员自动生成代码,提高开发...安装程序 Cursor Setup 0.2.21-x64.exe 是该工具的安装程序,文件名中的“x64”表示它是 Windows 64 位操作系统使用的程序。
Android cursor的详细说明,对于新手来说比较有用
oracle CURSOR 的幾個使用詳細例子,需要者可以在此下載,希望有幫助.
oracle数据库中的游标cursor在应用中具有极高的实用性。
此文档包含了CSS中cursor属性对应的鼠标图片与说明