public interface Cursor
implements Closeable
android.database.Cursor |
Known Indirect Subclasses |
该接口提供对数据库查询返回的结果集的随机读写访问。
游标实现不需要同步,因此使用Cursor时使用来自多个线程的Cursor的代码应该执行自己的同步。
实现应该 AbstractCursor
。
Constants |
|
---|---|
int |
FIELD_TYPE_BLOB 如果指定的列类型是blob,则返回 |
int |
FIELD_TYPE_FLOAT 如果指定的列类型为float,则返回 |
int |
FIELD_TYPE_INTEGER 如果指定的列类型是整数,则返回 |
int |
FIELD_TYPE_NULL 如果指定的 |
int |
FIELD_TYPE_STRING 如果指定的列类型是字符串,则返回 |
Public methods |
|
---|---|
abstract void |
close() 关闭光标,释放其所有资源并使其完全无效。 |
abstract void |
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) 检索请求的列文本并将其存储在提供的缓冲区中。 |
abstract void |
deactivate() 此方法在API级别16中已弃用。由于 |
abstract byte[] |
getBlob(int columnIndex) 以字节数组的形式返回请求的列的值。 |
abstract int |
getColumnCount() 返回总列数 |
abstract int |
getColumnIndex(String columnName) 返回给定列名称的从零开始的索引,如果该列不存在,则返回-1。 |
abstract int |
getColumnIndexOrThrow(String columnName) 返回给定列名称的从零开始的索引,如果该列不存在则返回 |
abstract String |
getColumnName(int columnIndex) 返回给定的从零开始的列索引处的列名称。 |
abstract String[] |
getColumnNames() 以结果中列出的顺序返回一个字符串数组,其中包含结果集中所有列的名称。 |
abstract int |
getCount() 返回游标中的行数。 |
abstract double |
getDouble(int columnIndex) 以double形式返回请求的列的值。 |
abstract Bundle |
getExtras() 返回一组额外的值。 |
abstract float |
getFloat(int columnIndex) 以浮点形式返回请求的列的值。 |
abstract int |
getInt(int columnIndex) 以int形式返回请求的列的值。 |
abstract long |
getLong(int columnIndex) 以long形式返回请求列的值。 |
abstract Uri |
getNotificationUri() 返回此光标数据中的更改通知将传递的URI,如先前由 |
abstract int |
getPosition() 返回行集合中光标的当前位置。 |
abstract short |
getShort(int columnIndex) 以短为单位返回请求列的值。 |
abstract String |
getString(int columnIndex) 以String形式返回请求的列的值。 |
abstract int |
getType(int columnIndex) 返回给定列值的数据类型。 |
abstract boolean |
getWantsAllOnMoveCalls() 如果此方法返回true,onMove()将仅在进程间调用。 |
abstract boolean |
isAfterLast() 返回指针是否指向最后一行之后的位置。 |
abstract boolean |
isBeforeFirst() 返回光标是否指向第一行之前的位置。 |
abstract boolean |
isClosed() 如果光标关闭,则返回true |
abstract boolean |
isFirst() 返回光标是否指向第一行。 |
abstract boolean |
isLast() 返回指针是否指向最后一行。 |
abstract boolean |
isNull(int columnIndex) 如果指定列中的值为空,则返回 |
abstract boolean |
move(int offset) 从当前位置向前或向后移动光标相对量。 |
abstract boolean |
moveToFirst() 将光标移到第一行。 |
abstract boolean |
moveToLast() 将光标移到最后一行。 |
abstract boolean |
moveToNext() 将光标移到下一行。 |
abstract boolean |
moveToPosition(int position) 将光标移到绝对位置。 |
abstract boolean |
moveToPrevious() 将光标移到上一行。 |
abstract void |
registerContentObserver(ContentObserver observer) 注册一个观察者,当支持该游标的内容发生更改时调用该观察者。 |
abstract void |
registerDataSetObserver(DataSetObserver observer) 注册时的变化发生在该光标数据集的内容被称为,例如一个观察者,当数据集通过改变 |
abstract boolean |
requery() 此方法在API级别11中已弃用。请勿使用此方法。 只需要请求一个新的游标,以便您可以异步执行此操作,并在新游标返回时更新您的列表视图。 |
abstract Bundle |
respond(Bundle extras) 这是光标与光标通信的用户的一种带外方式。 |
abstract void |
setExtras(Bundle extras) 设置 |
abstract void |
setNotificationUri(ContentResolver cr, Uri uri) 注册以观看更改的内容URI。 |
abstract void |
unregisterContentObserver(ContentObserver observer) 通过 |
abstract void |
unregisterDataSetObserver(DataSetObserver observer) 通过 |
Inherited methods |
|
---|---|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
int FIELD_TYPE_BLOB
如果指定的列类型是blob,则返回 getType(int)
值
常量值:4(0x00000004)
int FIELD_TYPE_FLOAT
如果指定的列类型为float,则返回 getType(int)
值
常量值:2(0x00000002)
int FIELD_TYPE_INTEGER
如果指定的列类型是整数,则返回 getType(int)
的值
常数值:1(0x00000001)
int FIELD_TYPE_NULL
如果指定的 getType(int)
空,则返回 getType(int)
的值
常量值:0(0x00000000)
int FIELD_TYPE_STRING
如果指定的列类型是字符串,则返回 getType(int)
值
常量值:3(0x00000003)
void copyStringToBuffer (int columnIndex, CharArrayBuffer buffer)
检索请求的列文本并将其存储在提供的缓冲区中。 如果缓冲区大小不够,将分配一个新的字符缓冲区并分配给CharArrayBuffer.data
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. if the target column is null, return buffer |
buffer |
CharArrayBuffer : the buffer to copy the text into. |
void deactivate ()
此方法在API级别16中已被弃用。
由于requery()
已弃用,因此也是如此。
取消激活光标,使所有调用失败,直到调用requery()
。 非活动游标使用比活动游标更少的资源。 调用requery()
将使光标再次处于活动状态。
byte[] getBlob (int columnIndex)
以字节数组的形式返回请求的列的值。
结果以及当列值为空或列类型不是blob类型时此方法是否引发异常是实现定义的。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
byte[] |
the value of that column as a byte array. |
int getColumnIndex (String columnName)
返回给定列名称的从零开始的索引,如果该列不存在,则返回-1。 如果您希望该列存在, getColumnIndexOrThrow(String)
改为使用getColumnIndexOrThrow(String)
,这会使错误更加清晰。
Parameters | |
---|---|
columnName |
String : the name of the target column. |
Returns | |
---|---|
int |
the zero-based column index for the given column name, or -1 if the column name does not exist. |
int getColumnIndexOrThrow (String columnName)
返回给定列名称的从零开始的索引,如果该列不存在则返回IllegalArgumentException
。 如果您不确定列是否存在或不使用getColumnIndex(String)
并检查-1,这比捕获异常更有效。
Parameters | |
---|---|
columnName |
String : the name of the target column. |
Returns | |
---|---|
int |
the zero-based column index for the given column name |
Throws | |
---|---|
IllegalArgumentException |
if the column does not exist |
也可以看看:
String getColumnName (int columnIndex)
返回给定的从零开始的列索引处的列名称。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
String |
the column name for the given column index. |
String[] getColumnNames ()
以结果中列出的顺序返回一个字符串数组,其中包含结果集中所有列的名称。
Returns | |
---|---|
String[] |
the names of the columns returned in this query. |
int getCount ()
返回游标中的行数。
Returns | |
---|---|
int |
the number of rows in the cursor. |
double getDouble (int columnIndex)
以double形式返回请求的列的值。
结果以及此方法在列值为空,列类型不是浮点类型或浮点值不可表示时引发异常,或者由于实现定义的值为 double
,所以浮点值不可表示。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
double |
the value of that column as a double. |
Bundle getExtras ()
返回一组额外的值。 这是光标向用户提供带外元数据的可选方式。 其中一种用途是报告为游标提取数据所需的网络请求的进度。
这些值只有在调用重新查询时才会更改。
Returns | |
---|---|
Bundle |
cursor-defined values, or Bundle.EMPTY if there are no values. Never null . |
float getFloat (int columnIndex)
以浮点形式返回请求的列的值。
结果以及当列值为空,列类型不是浮点类型或浮点值不可表示时,此方法是否引发异常,或者由于实现定义了 float
值,因此浮点值不可表示。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
float |
the value of that column as a float. |
int getInt (int columnIndex)
以int形式返回请求的列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Integer.MIN_VALUE
, Integer.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
int |
the value of that column as an int. |
long getLong (int columnIndex)
以long形式返回请求列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Long.MIN_VALUE
, Long.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
long |
the value of that column as a long. |
Uri getNotificationUri ()
返回此光标数据中的更改通知将传递的URI,如先前由 setNotificationUri(ContentResolver, Uri)
设置的 setNotificationUri(ContentResolver, Uri)
。
Returns | |
---|---|
Uri |
Returns a URI that can be used with ContentResolver.registerContentObserver to find out about changes to this Cursor's data. May be null if no notification URI has been set. |
int getPosition ()
返回行集合中光标的当前位置。 该值是从零开始的。 当行集合第一次返回时,游标将位于第一行之前的位置-1。 在返回最后一行之后,对next()的另一次调用将使游标超过最后一个条目,位于count()的位置。
Returns | |
---|---|
int |
the current cursor position. |
short getShort (int columnIndex)
以短为单位返回请求列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Short.MIN_VALUE
, Short.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
short |
the value of that column as a short. |
String getString (int columnIndex)
以String形式返回请求的列的值。
结果以及此方法在列值为空或列类型不是字符串类型时是否引发异常是实现定义的。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
String |
the value of that column as a String. |
int getType (int columnIndex)
返回给定列值的数据类型。 返回列的首选类型,但数据可能会转换为其他类型,如获取类型方法(如getFloat(int)
等)中getInt(int)
getFloat(int)
。
返回的列类型是
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
int |
column value type |
boolean getWantsAllOnMoveCalls ()
如果此方法返回true,onMove()将仅在进程间调用。
Returns | |
---|---|
boolean |
whether all cursor movement should result in a call to onMove(). |
boolean isAfterLast ()
返回指针是否指向最后一行之后的位置。
Returns | |
---|---|
boolean |
whether the cursor is after the last result. |
boolean isBeforeFirst ()
返回光标是否指向第一行之前的位置。
Returns | |
---|---|
boolean |
whether the cursor is before the first result. |
boolean isClosed ()
如果光标关闭,则返回true
Returns | |
---|---|
boolean |
true if the cursor is closed. |
boolean isFirst ()
返回光标是否指向第一行。
Returns | |
---|---|
boolean |
whether the cursor is pointing at the first entry. |
boolean isLast ()
返回指针是否指向最后一行。
Returns | |
---|---|
boolean |
whether the cursor is pointing at the last entry. |
boolean isNull (int columnIndex)
如果指定列中的值为空,则返回 true
。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
boolean |
whether the column value is null. |
boolean move (int offset)
从当前位置向前或向后移动光标相对量。 正偏移向前移动,负偏移向后移动。 如果最终位置超出结果集的范围,则结果位置将分别固定为-1或count(),具体取决于值是否在集合的前面或结尾。
如果请求的目标可达,此方法将返回true,否则返回false。 例如,如果游标当前位于结果集的第二个条目中,并且调用move(-5),则该位置将被固定为-1,并且返回false。
Parameters | |
---|---|
offset |
int : the offset to be applied from the current position. |
Returns | |
---|---|
boolean |
whether the requested move fully succeeded. |
boolean moveToFirst ()
将光标移到第一行。
如果光标为空,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToLast ()
将光标移到最后一行。
如果光标为空,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToNext ()
将光标移到下一行。
如果游标已经超过结果集中的最后一个条目,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToPosition (int position)
将光标移到绝对位置。 值的有效范围是-1 <= position <= count。
如果请求目标可达,此方法将返回true,否则返回false。
Parameters | |
---|---|
position |
int : the zero-based position to move to. |
Returns | |
---|---|
boolean |
whether the requested move fully succeeded. |
boolean moveToPrevious ()
将光标移到上一行。
如果游标已经在结果集中的第一个条目之前,此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
void registerContentObserver (ContentObserver observer)
注册一个观察者,当支持该游标的内容发生更改时调用该观察者。 通常情况下, requery()
在调用requery()
之前,数据集才会更改。
Parameters | |
---|---|
observer |
ContentObserver : the object that gets notified when the content backing the cursor changes. |
void registerDataSetObserver (DataSetObserver observer)
注册时的变化发生在该光标数据集的内容被称为,例如一个观察者,当数据集通过改变 requery()
, deactivate()
,或 close()
。
Parameters | |
---|---|
observer |
DataSetObserver : the object that gets notified when the cursors data set changes. |
boolean requery ()
此方法在API级别11中已弃用。
不要使用这个。 只需要请求一个新的游标,以便您可以异步执行此操作,并在新游标返回时更新您的列表视图。
执行再次创建光标的查询,刷新其内容。 这可以随时完成,包括在致电deactivate()
。 由于此方法可能会在数据库上执行查询并可能需要一段时间,因此如果在Main(UI)线程上调用该方法,则可能会导致ANR。 如果在主线程上执行此方法,则会打印警告。
Returns | |
---|---|
boolean |
true if the requery succeeded, false if not, in which case the cursor becomes invalid. |
Bundle respond (Bundle extras)
这是光标与光标通信的用户的一种带外方式。 每个束的结构完全由光标定义。
其中一个用途是告诉游标在报告错误后应该重试网络请求。
Parameters | |
---|---|
extras |
Bundle : extra values, or Bundle.EMPTY . Never null . |
Returns | |
---|---|
Bundle |
extra values, or Bundle.EMPTY . Never null . |
void setExtras (Bundle extras)
设置 Bundle
返回的 getExtras()
。
Parameters | |
---|---|
extras |
Bundle : Bundle to set, or null to set an empty bundle. |
void setNotificationUri (ContentResolver cr, Uri uri)
注册以观看更改的内容URI。 这可以是特定数据行的URI(例如,“content:// my_provider_type / 23”),也可以是内容类型的通用URI。
Parameters | |
---|---|
cr |
ContentResolver : The content resolver from the caller's context. The listener attached to this resolver will be notified. |
uri |
Uri : The content URI to watch. |
void unregisterContentObserver (ContentObserver observer)
通过 registerContentObserver(ContentObserver)
取消注册先前已使用此光标注册的观察者。
Parameters | |
---|---|
observer |
ContentObserver : the object to unregister. |
void unregisterDataSetObserver (DataSetObserver observer)
通过 registerContentObserver(ContentObserver)
取消注册先前已使用此光标注册的观察者。
Parameters | |
---|---|
observer |
DataSetObserver : the object to unregister. |