我Cursors在我的应用程序中广泛使用,加载并偶尔从数据库写入信息.我已经看到Honeycomb和兼容包有新的Loader类,旨在帮助以"良好"的方式加载数据.
从本质上讲,这些新类(特别是CursorLoader)比以前的数据管理方法要好得多吗?例如,CursorLoader过度管理有什么好处Cursors?
我使用a ContentProvider处理数据,这显然需要Uris但是如何与initLoader()方法相结合?我必须设置每个Fragments人单独使用装载机吗?并且每个加载器的id需要多么独特,它是在我的应用程序范围内还是仅仅是一个片段?有没有简单的方法简单地传递Uri给CursorLoader来查询我的数据?
我现在所能看到的是,Loaders添加了一个不必要的额外步骤来将我的数据导入我的应用程序,那么有人可以更好地向我解释它们吗?
有没有办法从SQLite获取ContentValues对象?我们可以在DB中插入ContentValues非常有用,从那里获取CV应该更有用.
有没有人可以解释硬件光标如何正常工作?它与我在屏幕上绘制的图形有什么关系?我正在使用OpenGL绘制,硬件光标如何与OpenGL图形相关?
编辑:对于那些可能对此感兴趣的人,我刚刚实现了用硬件显示光标所需的内容.实现在内核中并且使用它简单的ioctl就足够了.完美的工作.
我试图找到在Android应用程序中使用sqlite数据库在我的两个表上进行简单表连接的最佳方法.是使用CursorJoiner最简单的方法还是有更简单的方法?
想象一下,我有一个mysql游标和数据读取.数据量可能非常大,我想每次处理一行.
一个简单直接的方式可能是这样的:
while True:
row = cursor.fetchone()
if not row: break
.....
Run Code Online (Sandbox Code Playgroud)
但这看起来不太好,所以我想知道这种方式是否像想象的那样有效:
for row in iter(cursor.fetchall())
Run Code Online (Sandbox Code Playgroud)
我想知道的是:如果我使用这种iter(cursor.fetchall())方式,它是先获取所有数据还是一次只取一行?
任何想法都表示赞赏.
谢谢
我有一个SQL表,它由以下代码创建:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + SUBJECT
+ " TEXT NOT NULL," + TOPIC + " TEXT NOT NULL, "
+ LECTURENUMBER + " TEXT NOT NULL, " + PAGENUMBER
+ " TEXT NOT NULL, " + DATE + " TEXT NOT NULL, " + _DATA
+ " TEXT NOT NULL);");
}
Run Code Online (Sandbox Code Playgroud)
我查询表如下:
String sql = "SELECT " + _ID + "," …Run Code Online (Sandbox Code Playgroud) 当我试图从手机的联系人列表中获取电话号码时.问题是,当我在手机中的联系人列表为空时运行应用程序时,应用程序已停止.我检查了一下,这是因为光标是空的.
如何检查光标是否为空或手机的联系人列表中是否有任何联系人?
ArrayList<String> lstPhoneNumber = new ArrayList<String>();
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
lstPhoneNumber = new ArrayList<String>();
phones.moveToFirst();
// The problematic Line:
lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER)));
while (phones.moveToNext()) {
lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
phones.close();
Run Code Online (Sandbox Code Playgroud) Vim:是否有一个键移动光标到下一行的开头?j将光标移动到下一行中当前位置的相应位置.我正在寻找一个可以将光标移动到位置0的单个键,而不管当前行中的光标位置如何.