如何从 Content Provider 获取每一行?
How can I get every row from a Content Provider?
如何从内容提供者那里获取每一行?我尝试使用 Cursor c = getContentResolver().query(uri, null, null, null, null)
来做到这一点
然后
String s;
if (c != null && c.moveToFirst())
while (c.moveToNext())
s = c.getString(c.getColumnIndexOrThrow("string"));
c.close();
但它并没有 work.Instead 获取所有行,它只获取最后一行,重复次数与我的数据库的第 1 行一样多。
你得到 "rows-1" 是因为你使用 moveToFirst()
后跟 moveToNext()
作为循环控制导致你跳过第一行。
如果您看到 DB 的所有行的列 "string" 具有相同的值,则显示您 "s" 的代码有问题(您没有 post) 或您的数据库每一行都包含相同的值,或者您没有在 ContentProvider
.
中正确实施 query()
您也可以使用Cursor.getCount()获取游标中的行数。
当 运行 针对由 DB 支持的内容提供者时,此代码对我有用:
Cursor c = getContentResolver().query(uri, null, null, null, null);
if (c != null) {
while (c.moveToNext()) {
String s = c.getString(c.getColumnIndexOrThrow("name"));
Log.i("Demo", s);
}
c.close();
}
如何从内容提供者那里获取每一行?我尝试使用 Cursor c = getContentResolver().query(uri, null, null, null, null)
来做到这一点
然后
String s;
if (c != null && c.moveToFirst())
while (c.moveToNext())
s = c.getString(c.getColumnIndexOrThrow("string"));
c.close();
但它并没有 work.Instead 获取所有行,它只获取最后一行,重复次数与我的数据库的第 1 行一样多。
你得到 "rows-1" 是因为你使用 moveToFirst()
后跟 moveToNext()
作为循环控制导致你跳过第一行。
如果您看到 DB 的所有行的列 "string" 具有相同的值,则显示您 "s" 的代码有问题(您没有 post) 或您的数据库每一行都包含相同的值,或者您没有在 ContentProvider
.
query()
您也可以使用Cursor.getCount()获取游标中的行数。
当 运行 针对由 DB 支持的内容提供者时,此代码对我有用:
Cursor c = getContentResolver().query(uri, null, null, null, null);
if (c != null) {
while (c.moveToNext()) {
String s = c.getString(c.getColumnIndexOrThrow("name"));
Log.i("Demo", s);
}
c.close();
}