1. ¹ØÓÚ Cursor
ÔÚÄãÀí½âºÍʹÓà Android Cursor µÄʱºòÄã±ØÐëÏÈÖªµÀ¹ØÓÚ Cursor µÄ¼¸¼þÊÂÇ飺
Cursor ÊÇÿÐеļ¯ºÏ¡£
ʹÓà moveToFirst() ¶¨Î»µÚÒ»ÐС£
Äã±ØÐëÖªµÀÿһÁеÄÃû³Æ¡£
Äã±ØÐëÖªµÀÿһÁеÄÊý¾ÝÀàÐÍ¡£
Cursor ÊÇÒ»¸öËæ»úµÄÊý¾ÝÔ´¡£
ËùÓеÄÊý¾Ý¶¼ÊÇͨ¹ýϱêÈ¡µÃ¡£
Cursor λÓÚ android.database.CursorÀ࣬¿É¼û³öËüµÄÉè¼ÆÊÇ»ùÓÚÊý¾Ý¿â·þÎñ²úÉúµÄ¡£
ÔÚAndroid ²éѯÊý¾ÝÊÇͨ¹ýCursor ÀàÀ´ÊµÏֵġ£µ±ÎÒÃÇʹÓà SQLiteDatabase.query()·½·¨Ê±£¬¾Í»áµÃµ½Cursor¶ÔÏó£¬ CursorËùÖ¸ÏòµÄ¾ÍÊÇÿһÌõÊý¾Ý¡£
2. ¹ØÓÚ Cursor µÄÖØÒª·½·¨£º
close()
¹Ø±ÕÓα꣬ÊÍ·Å×ÊÔ´
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
ÔÚ»º³åÇøÖмìË÷ÇëÇóµÄÁеÄÎı¾£¬½«½«Æä´æ´¢
getColumnCount()
·µ»ØËùÓÐÁеÄ×ÜÊý
getColumnIndex(String columnName)
·µ»ØÖ¸¶¨ÁеÄÃû³Æ£¬Èç¹û²»´æÔÚ·µ»Ø-1
getColumnIndexOrThrow(String columnName)
´ÓÁ㿪ʼ·µ»ØÖ¸¶¨ÁÐÃû³Æ£¬Èç¹û²»´æÔÚ½«Å׳öIllegalArgumentException Òì³£¡£
getColumnName(int columnIndex)
´Ó¸ø¶¨µÄË÷Òý·µ»ØÁÐÃû
getColumnNames()
·µ»ØÒ»¸ö×Ö·û´®Êý×éµÄÁÐÃû
getCount()
·µ»ØCursor ÖеÄÐÐÊý
moveToFirst()
ÒÆ¶¯¹â±êµ½µÚÒ»ÐÐ
moveToLast()
ÒÆ¶¯¹â±êµ½×îºóÒ»ÐÐ
moveToNext()
ÒÆ¶¯¹â±êµ½ÏÂÒ»ÐÐ
moveToPosition(int position)
ÒÆ¶¯¹â±êµ½Ò»¸ö¾ø¶ÔµÄλÖÃ
moveToPrevious()
ÒÆ¶¯¹â±êµ½ÉÏÒ»ÐÐ
3. СÀý×Ó£º
£¨1£© Ϊ¿ÕµÄCursorµÄÅжÏ
if (cur.moveToFirst() == false)
{
//Ϊ¿ÕµÄCursor
return;
}
£¨2£© ·ÃÎÊ Cursor µÄϱê»ñµÃÆäÖеÄÊý¾Ý
int nameColumnIndex = cur.getColumnIndex(People.NAME);
String name = cur.getString(nameColumnIndex);
£¨3£©Ñ»· Cursor È¡³öÐèÒªµÄÊý¾Ý
while(cur.moveToNext())
{
//¹â±êÒÆ¶¯³É¹¦
//°ÑÊý¾ÝÈ¡³ö
}
µ±cur.moveToNext() Ϊ¼Ùʱ½«Ìø³öÑ»·£¬¼´CursorÊý¾ÝÑ»·Íê±Ï¡£
Èç¹ûÄãϲ»¶Óà for Ñ»·¶ø²»ÏëÓÃWhile Ñ»·¿ÉÒÔʹÓÃGoogle ÌṩµÄ¼¸Ï·½·¨£º
isBeforeFirst()
·µ»ØÓαêÊÇ·ñÖ¸Ïò֮ǰµÚÒ»ÐеÄλÖÃ
isAfterLast()
·µ»ØÓαêÊÇ·ñÖ¸ÏòµÚ×îºóÒ»ÐеÄλÖÃ
isClosed()
Èç¹û·µ»Ø true ¼´±íʾ¸ÃÓÎÏ·±ê¼º¹Ø±Õ
ÓÐÁËÒÔÉϵķ½·¨£¬¿ÉÒÔÈç´ËÈ¡³öÊý¾Ý:
AbstractCursor
for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())
{
int nameColumn = cur.getColumnIndex(People.NAME);
int phoneColumn = cur.getColumnIndex(People.NUMBER);
String name = cur.getString(nameColumn);
String phoneNumber = cur.getString(phoneColumn);
}
4. ÁíÍ⣬»¹Óм¸¸ö¼ºÖªµÄ×ÓÀ࣬·Ö±ðΪ£º
AbstractWindowedCursor
CrossProcessCursor
CursorWrapper
MatrixCursor
MergeCursor
MockCursor
SQLiteCursor
5. ¿ÉÒԲο¼AndroidÔ´ÂëÖеÄRingtoneManager.java(ÊôÓÚframework²ã)£¬ SoundRecorderÓ¦ÓóÌÐòÀ´Àí½â£¬¿´¿´ËüÃÇÊÇÈçºÎÔËÓõġ£