- 浏览: 46518 次
- 性别:
- 来自: 西安
最新评论
来自: http://hi.baidu.com/lfcaolibin/blog/item/2ce306ec77cebd4478f055b4.html
Cursor与Adapter结合使用
查询数据库均会把查询的结果包装在一个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 Intent and Intent Filter (转)
2011-03-10 22:47 1428Android Intent and Intent ... -
Intent详解
2011-03-03 14:18 1116在应用中,我们可以以两种形式来使用Intent: 直接I ... -
Intent间传送数据一般有两种常用方法
2011-01-24 14:50 1270Intent间传送数据一般有两种常用的办法: 1.extra ... -
android RelativeLayout 详解
2011-01-01 09:46 1561<?xml version="1.0" ... -
How to Use Android Downloads Provider
2010-12-20 21:41 1308本文转载自 http://blog.lytsing.or ... -
android 开发中的一些小知识点
2010-12-17 09:49 9641 关于onPause(): onPause ... -
content provider 深入解析
2010-12-15 22:04 1067Content providers are on ... -
Service的高级应用
2010-12-12 20:48 1324下面是android Service的高级应用的一个例子,主要 ... -
TabActivity
2010-12-12 19:09 1733下面是一个使用android tabactivity 的例子 ... -
android 测试初探(android test)
2010-12-07 15:00 7986android Testing and Instrumenta ... -
Localization of android
2010-12-05 21:51 0android 会在不同地域的不同机器上运行。为了是应用能够 ... -
android高效编程之使用本地变量
2010-12-05 14:26 948hava a look at the following co ... -
在不同的Activity中传递对象的方法
2010-12-02 10:20 1981下面我们将要实现的功 ... -
Working with Context Menus
2010-11-15 23:36 828... -
Handler的理解
2010-11-14 20:58 801A Handler allows you to sen ... -
android开发问题解决日志
2010-11-14 18:33 18461.、android中R文件消失的处理方式 ... -
android 中对SDCard 的操作
2010-11-11 14:14 1600对于像视频这样的大文件,我们可以把它存放在SDCard。 SD ... -
ViewAnimation
2010-11-05 12:46 1012view animation 的实现 Understandi ... -
android高效的编写高效代码
2010-10-17 19:13 729本文来源于: 从此学习网 原文: http://www.con ... -
scale animation
2010-10-11 23:29 1585Scale animation: You use this t ...
相关推荐
simple-database4-cursor-adapter 通过 SimpleCursorAdapter 在 ListView 上显示 SQLite 记录
所以我们想把查询数据放在一个异步任务中,查询结果获得Cursor,然后在onPostExecute (Cursor result)方法中设置Adapter,我们可能会想到使用Activity的managedQuery来生成Cursor,这样Cursor就会与Acitivity的生命...
网上下载别人的左滑删除置顶,recycleview的是可以直接用,然后自己修改了一部分,加入了cursor adapter适配器,也修改了listview的bug
cursor-oracle-zend-framework-adapter 这是在 Zend Oracle 适配器中执行游标的小扩展
yrecyclerview一个简单的...Cursor ADAPTER的展示效果和LIST ADAPTER一样,需要的可以下载DEMO查看如何使用RecyclerCursorAdapterHow toTo get a Git project into your build:Step 1. Add the JitPack repo
android layout_Gravity,Bundle,ContentResolver,cursor,Fragments ,Fragments,inflater ,Fragment,数据查询query函数参数解析, 【Cursor】 类的介绍,android 获得通话记录,Handler ,Android四大基本组件介绍与生命...
摘要:Java源码,Android源码,...弹出的上下文菜单、使用managedQuery获取ContactsProvider的Cursor、使用SimpleCursorAdapter建立Cursor的Adapter以便使用,数据表示形式为:姓名 - 手机号码、为当前ListView关联Adap
可以查询得到Cursor游标类型的数据,有两个比较常用的适配器,直接接收Cursor游标类型的数据源,分为1.SimpleCursorAdapter 2.CursorAdapter
SQLite数据库查询结果显示在ListView中,使用SimpleCursorAdapter
Cursor c = managedQuery(uri, projection, null, null, null); // 实例化桌号下拉列表Spinner的Adapter SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item,...
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract....
Android Basic Galler是一个简单但实用的照相馆,它使用Cursor Loader与AsycTask一起加载图像,并使用Cursor Adapter在GridView中显示图像。 我已经从Jeff Sharkey的本演示中获得了基本实现,“用更少的钱做更...
在很多时候需要将表中的数据显示在...SimpleCUrsorAdapter与SimpleAdapter的使用方法非常相近,只是将数据源从List对象换成了Cursor对象,而且SimpleCursorAdapter类构造方法的第4个参数from表示Cursor对象中的字段。
最近写数据库,我就自己写了个带密码的个人通讯录,感觉sqlite特别好用,和mysql,sqlserver都一样,真是简单的关系型数据库,注意:开启数据库,cursor后一定要记得关闭close()掉,避免浪费资源。另外adapter的...
SimpleToDoCodePath 这是一个简单的待办事项列表的 Android 演示应用...建议:应用程序使用 Cursor Adapter 而不是 Array Adapter 建议:使用 CustomCursorAdapter 改进待办事项的样式 建议:使用带有保存按钮的 Dia
如果有相应的它可以与任何测试框架一起使用。 其他扩展可以通过充当来获得对测试适配器的完全访问权限。 通过安装扩展,也可以在会话中使用 。 当您安装测试适配器之一时,将自动安装此扩展,因此通常无需手动...
</LinearLayout>adapter的设置普通的ListView是如下设置adapter的:ListView list = (ListView)findViewById(android.R.id.list); SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R....
2)、使用Adapter时,没有使用系统缓存的converview。 3)、即时调用recycle()释放不再使用的Bitmap。 适当降低Bitmap的采样率,如: BitmapFactory.Options options = newBitmapFactory.Options(); options.inS
关于AutoCompleteTextView的使用,我想大家并不陌生,对其设定上Adapter后系统便能自己识别与匹配了。近期 一个项目中,需要做到匹配通迅录中的电话号码和联系人,由于通迅录中数据量大,所以把所有的数据在自己提示...
Android高级编程《Android高级编程》有清华大学出版社出版,书中对Android做了简单介绍,并对创建应用程序,用户... 6.4.2 Cursor和内容值 6.4.3 使用Android数据库 6.5 内容提供器简介 6.5.1 使用内容提供器