我有viewPager,大约有7页。几乎所有页面都有数据列表。我从sqlite db获得的数据。在更改sql数据(aka ContentProvider
)后,我使用LoaderManager.LoaderCallbacks<Cursor>
和getContext().getContentResolver().notifyChange(uri, null)
来更新数据。它工作,但我将ListView替换为RecycleView,因为它似乎更灵活,我有一些问题与listView,但一个问题它没有默认光标适配器。我在github中找到了一个,但现在它按照以下方式工作:
ContentProvider包含方法update
,insert
,query
,delete
。在一页视图寻呼机中,我使用getActivity().getContentResolver().update(....);
或其他方法,在其他页面中使用LoaderManager
自动更新数据(通常的方法对我而言)。
但现在我怀疑:
需要我内容提供商吗? ContentProvider
向第三方应用程序提供数据,但不为自己的应用程序提供数据,这是开销
也许RecyclerView
有更新数据的其他功能,我的方法不好?
答案 0 :(得分:0)
我认为更好的方式是使用CursorLoader。因为它在光标上挂起了观察者,如果添加新数据,你可以使用getContentResolver().notifyChange(uri, null);
,这样CusrorLoader会自动获取带有新数据的新光标,你可以使用swap for update RecyclerView(但是RecyclerView没有默认的实现适配器)使用光标,因此您需要找到类似RecyclerViewCursorAdapter)的内容。