我试图通过自定义ContentProvider提供游戏中的高分。它将使用服务器连接而不是SQLite DB。
现在,ContentProvider的 query(), update()和 delete()方法已经选择, selectionArgs 和 sortOrder 参数。所以问题是:我如何解析它们?我不想在这个简单的应用程序中添加繁重的SQL语法解析库。
互联网上的人提到RESTProvider:https://github.com/novoda/RESTProvider。这似乎是我正在寻找的,但结果却错过了相关的代码。
为什么我想首先使用ContentProvider获得高分?因为游标在Android中有很大的支持,它可能对我的其他相关应用程序很有用。
答案 0 :(得分:2)
没有收到任何回复/评论,所以我自己回答问题。
基本上,在这种情况下的想法是尽可能地简化问题。所以我限制投影只有列名,选择只包含column = ?
AND-ed片段,并且必需 sortOrder 由column ASC
或column DESC
部分组成。
换句话说,您不希望为某些网络数据创建SQL引擎,而只需创建ContentProvider接口。
答案 1 :(得分:0)
您的应用与ContentProvider之间的集成只是通过Uri's。
因此,正如您已经说过的那样,根本不需要SQL。
您只需使用通常的query(..)
语句实现if/switch
方法并执行网络请求。
最有可能的是,您在应用中使用LoaderManager.LoaderCallbacks<D>
,网络请求将在主线程外部执行。
现在,问题是关于<D>
类型 - 必须Cursor
才能符合内容提供商query
方法返回类型。
您应该实现接口Cursor
只是为了保持应用程序的一致性 - 您的新Cursor
类可能正在解析JSON并返回数据,就像使用SQLite游标一样。您必须创建带索引的地图才能模拟_cursor.get<Type>(_cursor.getColumnIndex(_name))
另一种方法是实施LoaderManager.LoaderCallbacks<YourClass>
。并且YourClass
将有其他方法来简化从实际内容中获取数据。当然,由于Content Provider返回Cursor
,因此在创建加载器时需要介入一些内容。