我正在构建一个需要根据排序条件执行http请求或sql请求的应用程序。
当排序条件为Popularity
或Vote
时,我会调用API。当条件为Favorite
时,我使用SQLite数据库。
我目前有一个自定义适配器,它扩展BaseAdapter
以从http请求中获取数据。我也将此适配器用于sql请求,但我必须手动重新运行sql请求并通知适配器更改。
对于sql请求,我想使用游标适配器,以便轻松使用一些功能,如加载器。
我的问题是:是否可能/这是一个好习惯,有两个适配器并根据排序标准切换它们?
如果不是,我该怎么办?我有一些想法,比如构建自定义AsyncTaskLoader或使用isFavorite
条目将http结果保存到数据库中,这样我就可以只使用CursorAdapter了。
答案 0 :(得分:1)
是否可能/这是一个很好的做法,有两个适配器和 根据排序标准切换它们?
为什么要两个适配器?你真正需要的是让你的Activity / Fragment实现CursorLoader
接口,并将它与CursorAdapter
的子类一起使用。在您的http请求返回新数据后,您将更新数据库并通知特定的Uri
。 Android将提供重新查询您的数据库。 onLoadFinish
您只需交换光标