Как сохранить содержимое списка фрагментов после поворота экрана? - PullRequest
0 голосов
/ 06 мая 2020

[! [Снимок экрана с фрагментом и основной деятельностью] [1]] [1]
Основная активность моего демонстрационного приложения состоит из двух фрагментов, при нажатии кнопки проверки будет создан список, однако, если я повернул экран, этот список будет уничтожен. Как я могу сохранить эти данные в комплекте?

setRetainInstance (true); здесь не работает.

Я видел следующий код, но понятия не имею, как сохранить Arraylist map и obj в пакете.

@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("tvActivity",tvActivity.getText().toString());
outState.putInt("ivActivity", imageResource);
outState.putString("btnActivity",btnActivity.getText().toString());
super.onSaveInstanceState(outState);
}

ниже мой код

private SimpleAdapter reusltAdapter;
private List<Map<String, Object>> qResult;

sqLiteHelper = new MySQLiteHelper(getActivity());
                        SQLiteDatabase db = sqLiteHelper.getReadableDatabase();

                        Cursor cursor = db.rawQuery("SELECT * FROM incometb WHERE date <= ? AND  date >= ?", new String [] {String.valueOf(endday),String.valueOf(startday)});
                        qResult = new ArrayList<>();
                        while (cursor.moveToNext()) {
                            Map<String, Object> map = new HashMap<>();
                            Integer id = cursor.getInt(cursor.getColumnIndex("id"));
                            String date = cursor.getString(cursor.getColumnIndex("date"));
                            String cate = cursor.getString(cursor.getColumnIndex("cate"));
                            String title = cursor.getString(cursor.getColumnIndex("title"));
                            Integer money = cursor.getInt(cursor.getColumnIndex("money"));
                            int[] imgIds = new int[]{R.drawable.salary,R.drawable.other};
                            if(cate.equals("salary")){
                                map.put("icon",imgIds[0]);
                            }else{
                                map.put("icon",imgIds[2]);
                            }
                            map.put("id", id);
                            map.put("date", date);
                            map.put("cate", cate);
                            map.put("title", title);
                            map.put("money", money);
                            qResult.add(map);
                        }

                        reusltAdapter =  new SimpleAdapter(getActivity(), qResult, R.layout.account_book_item
                                , new String[]{"icon","date","cate","title", "money"}, new int[]{R.id.item_img,R.id.date,R.id.cate,R.id.title, R.id.money});
                        resultListView.setAdapter(reusltAdapter); ```


  [1]: https://i.stack.imgur.com/YnDad.png
  [2]: https://i.stack.imgur.com/AfgGW.png

1 Ответ

0 голосов
/ 06 мая 2020

3 Вариант:

  1. Используйте ViewModel и сохраняйте данные в модели просмотра
  2. исправьте ориентацию макета
  3. В Android добавьте манифест: android:configChanges="keyboardHidden|orientation" on это действие
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...