3

我正在尝试使用自定义 ContentProvider 提供游戏内高分。而不是 SQLite DB,它将使用服务器连接。

现在,ContentProvider 的query()update()delete()方法具有selectionselectionArgssortOrder参数。所以问题是:我如何解析它们?我不想在这个简单的应用程序中添加繁重的 SQL 语法解析库。

网上有人提到RESTProvider:https ://github.com/novoda/RESTProvider 。这似乎是我正在寻找的东西,但结果却丢失了相关代码。

为什么我首先要使用 ContentProvider 来获得高分?因为游标在 Android 中有很好的支持,它可能对我的其他相关应用程序有用。

4

2 回答 2

2

没有收到任何回复/评论,所以自己回答问题。

基本上,这种情况下的想法是尽可能简化问题。因此,我将投影限制为仅包含列名,选择仅包含column = ?AND-ed 片段,并且要求sortOrder包含column ASCcolumn DESC部分。

换句话说,您不想创建 SQL 引擎,而只是为某些网络数据创建 ContentProvider 接口。

于 2013-06-27T14:48:28.477 回答
0

您的应用程序和 ContentProvider 之间的集成只是通过 Uri 的。因此,正如您已经说过的,根本不需要 SQL。您只需要query(..)使用通常的if/switch语句实现该方法并执行网络请求。最有可能的是,您LoaderManager.LoaderCallbacks<D>在您的应用程序中使用,网络请求将在主线程之外执行。

现在,问题是关于<D>类型的——它必须Cursor符合 Content Providerquery方法的返回类型。
您应该实现接口Cursor只是为了保持应用程序的一致性 - 您的新Cursor类可能正在解析 JSON 并返回数据,就像使用 SQLite 游标时一样。您必须创建带有索引的地图只是为了模拟_cursor.get<Type>(_cursor.getColumnIndex(_name))

另一种方法是实施LoaderManager.LoaderCallbacks<YourClass>. 并且YourClass将有其他方法来简化从实际内容中获取数据的过程。当然,由于 Content Provider 返回一个Cursor.

于 2014-05-09T14:02:01.617 回答