如何从 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();
        }