没有SQL的ContentProvider

Sha*_*yay 8 android android-2.2-froyo android-contentprovider

我有两个数据需要从外部应用程序访问并存储.根据文档,ContentProviders是唯一可能的方式,但它也提到了外部存储.ContentProviders实现类似数据库的"接口",对于两个数据,使用数据库是非常不必要的.我宁愿将它们保存到文件中,但是通过实现抽象方法使用ContentProvider是有问题的,因为这些方法被构造为数据库查询.

我知道没有任何指定ContentProviders必须使用下面的数据库来存储数据,但是有没有其他方法来存储必须共享到文件系统的最少量数据?

Ken*_*ins 6

我过去常常MatrixCursor解决这个问题.看看吧.

编辑:对不起,当我回答时,我刚刚扫描了问题.ContentProvider是应用程序共享数据的唯一方法.应用程序中的活动可SharedPreferences用于较小的数据,并添加持久性.

编辑v2:这是我用来为我的ContentProvider的查询功能填充MatrixCursor的函数.我正在使用我创建的预定义VIEW,它返回一组不同的值,这将设置一个带有_ids的游标,我可以传递给我的ExpandableListView.

private Cursor getFactions() {
        MatrixCursor mc = new MatrixCursor(Model.Faction.PROJECTION);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor c = db.query(MODELFACTION_TABLE_NAME, new String[] { Model.Faction.FACTION }, null, null, null, null, Model.Faction.FACTION + " ASC");
        c.moveToFirst();
        do {
            mc.addRow(new Object[] { c.getPosition(), c.getString(c.getColumnIndex(Model.Faction.FACTION))});               
        } while (c.moveToNext() && ! c.isAfterLast());
        c.close();
        db.close();
        return mc;
    }
Run Code Online (Sandbox Code Playgroud)

  • 使用带有标准文件输入/输出的矩阵光标结束.然后使用ContentResolver.query()读取信息并将其存储在游标中.谢谢您的帮助! (2认同)