坚持活动娱乐的RecycyclerViewAdapter数据

时间:2016-12-08 11:52:48

标签: android android-fragments android-recyclerview

我的Activity里面有Fragment。 在该片段中有RecyclerViewRecyclerViewAdapter

在片段onCreate我这样做:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d("TAGGG", "onCreate: ");
    // Database handler
    Contract.DbHelper dbHelper = new Contract.DbHelper(getContext());
    dERecyclerViewAdapter.setEntries(dbHelper.readAllEntries());
}

每次重新创建Activity(向上导航,轮换更改)时,都会再次从数据库中读取数据。 存储它的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用savedInstanceState通过捆绑包存储数据。你可以像这样存储它

 @Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
   //Use the bundle to store data
}

并像这样检索

@Override
     public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
if(savedInstanceState!=null)
    {
      //Use the savedInstanceState to get the stored result 
    }
 }

希望这有帮助!

答案 1 :(得分:0)

您应该查看CursorLoader课程。你的情况正是这个课程的目的。

加载器本身可以在配置更改之间保持不变,因此当您调用onCreate时,如果加载器已经执行了查询,它将只提供已读取的数据,而不是重新查询数据库。

请参阅https://developer.android.com/guide/components/loaders.html

另外http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html