旋转屏幕后如何保留片段的列表视图内容?

问题描述 投票:0回答:1

[![片段和主要活动的屏幕快照] [1]] [1]我的演示应用程序的mainactivity有两个片段,通过单击检查按钮,将创建一个列表视图,但是,如果我旋转屏幕,该列表视图将被存储。我该如何存储这些数据以进行捆绑?

setRetainInstance(true);在这里不起作用。

我看到了以下代码,但不知道如何在捆绑包中存储map和obj的arraylist。

@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
android android-fragments
1个回答
0
投票

3选项:

  1. 使用ViewModel并将数据保留在viewmodel中
  2. 固定您的布局方向
  3. 在Android清单中添加:android:configChanges="keyboardHidden|orientation"在该活动上
© www.soinside.com 2019 - 2024. All rights reserved.