Cursor作用类似于java中resultSet,把查询到的结果集封装在一个Cursor对象当中。cursor就像是结果集上的一个游标,可以向前向后移动。

常用方法:

moveToFirst(); moveToFirst(); 移动到第一行或最后一行

moveToNext();MoveToPrevious() 向前移动一行或向后移动一行

moveToPosition(positon) 移动到指定位置

注:以上五个方法都有返回值。如果移动成功就返回true,移动失败返回false。 ==>当移动到指定行后,要掉用cursor的getXxx()方法获取指定列的数据。

我们可以通过while(cursor.moveToNext()){   取值} 从而把表中的数据都读出来。

拷贝别人的一份资料,如下:

询数据库均会把查询的结果包装在一个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),强行设置的话会抛出异常。最后程序运行的结果,如下图所示:

android cursor相关推荐

  1. Android Cursor自动更新的实现和原理

    原文链接:http://www.sxrczx.com/pages/kohoh1992.github.io/cursor-auto-sync/index_1431878338570.html 在Andr ...

  2. Android Cursor类的概念和用法

    http://www.2cto.com/kf/201109/103163.html 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情: ...

  3. Android Cursor的一些浅显见解

    一.Cursor的数据模型 之前一直搞不懂Cursor的数据模型是怎么样的,等到看到下面别人博客中把Cursor比作.net中的DataReader才明白,原来是这么回事.但是没 学过.Net的同志可 ...

  4. android cursor 实例化,为什么Cursor放到带参数带返回值方法里就报错?

    完整代码如下: 其中有大部分的代码被注释,那是可以成功运行的. 后来我想啊,游戏有好多种,但是需要统计的内容是一样的. 我就想传参 然后获得返回值的方式 来减少代码量啊. 但是把相关的查询代码放到 带 ...

  5. cursor 过滤 android,Android cursor query方法详解

    1.cursor query 方法入参 public final Cursor query (Uri uri, String[] projection,String selection,String[ ...

  6. android view moveto,android – cursor.moveToPosition(i)的速度有多快?

    想知道是否调用了cursor.moveToPosition(i);会触发持久存储操作,还是只读取内存缓存? 在Android中的RecycleView适配器中,这是经常调用的,我不想重载系统访问持久存 ...

  7. android cursor 空,java – Android:即使数据库不为空,Cursor也总是返回null

    即使数据库不为空,Cursor也始终返回null.为什么?以及如何解决?谢谢. public StatParcours getOneUserInfo(int id) { SQLiteDatabase ...

  8. android cursor关闭,android在异步任务中关闭Cursor的代码方法

    查询数据会比较耗时,所以我们想把查询数据放在一个异步任务中,查询结果获得Cursor,然后在onPostExecute (Cursor result)方法中设置Adapter,我们可能会想到使用Act ...

  9. android cursor相关的性能问题,Android Mms之:深入理解对话列表管理

    Conversation这个类主要表示对话的数据结构,其内持有一个Thread所有的相关信息,如Recipients,ThreadId等等,也用于管理Thread,比如查询Thread,删除Threa ...

最新文章

  1. day16 递归函数
  2. 深度学习如何又好又快? Google发布最新《高效深度学习: 更小、更快、更好》综述...
  3. 剑指offer面试题:替换空格
  4. 一招判断三元催化堵塞_汽车的氧传感器和三元催化器故障如何判断呢?用这些方法判断...
  5. 考研英语真题笔记 2020
  6. Windows游戏编程大师技巧笔记(一些基础)
  7. CCF NOI1009 分配任务
  8. mac10.12 安装“任何来源”软件解决
  9. 转:Scrapy(爬虫框架)入门教程
  10. 熊猫烧香病毒专杀下载
  11. SPSS——线性回归
  12. Windows图标-Icon文件格式分析。
  13. linux cups打印中文,Linux使用cups进行打印
  14. 拼装机器人感想_对机器人搭建的认识及感悟
  15. Excel中身份证号码验证,那些不得不说的事
  16. iOS 一个APP打开另一个APP
  17. 2023届 计算机毕业设计 选题 计算机专业 毕业设计题目 推荐
  18. Express框架与Ajax应用
  19. 经方败案群20150303李小荣讲桂枝芍药知母汤
  20. Android Word转HTML源码

热门文章

  1. 设计一个算法的方法论
  2. 转载 excel生成数据地图
  3. 大一新生计算机类专业入门
  4. Android手机流量分析工具介绍
  5. Windows nginx + rtmp 流媒体服务器搭建(uniapp可用)
  6. 07年12月大学英语四级考试B卷答案(新东方版)
  7. SER-U ftp服务器的配置
  8. 2018年北京邮电大学计算机考研机试试题及答案
  9. html怎么帮图片占位,css 技巧:利用 after 伪对象和 background 属性实现 img 图片标签占位图...
  10. 数字华容道java_最强大脑数字华容道背后的数学知识