【问题标题】:How to store ArrayList of objects to SharedPreferences and then retrieve it?如何将对象的 ArrayList 存储到 SharedPreferences 然后检索它?
【发布时间】:2014-08-24 15:28:30
【问题描述】:

我有一个 ExpandableListView,用户可以在其中选择属于不同类别的不同项目。他的选择存储在ArrayList<Selected_Group>。这是 Selected_Group 对象的代码:

public class Selected_Group extends Group {

private int selected_group_id;
private int trip_id;
private int group_id;
private ArrayList<Selected_Item> arr_selected_items;
private int marked_counter = 0;

// Constructors...

// Getters & setters

// Other methods
}

请注意,Selected_Group 对象还包含一个 ArrayList - 该组的选定项。

当活动停止时(例如,打电话),我想将 ArrayList 存储在 SharedPreferences 中,并在它恢复时 - 检索它。此外,当用户点击 Save 按钮时 - 从 SharedPreferences 中删除存储的 ArrayList。

有可能吗?如果是 - 如何?

【问题讨论】:

  • 您应该考虑使用其他形式的持久存储,例如 sqlite
  • 一旦用户点击保存按钮,所有值都将存储在 sqlite db 中,我想将此 ArrayList 临时存储在 SharedPreferences 中,以防必须重新创建活动:屏幕方向更改或传入电话...
  • 你尝试过 onSaveInstanceState 吗?
  • 使您的对象可打包并将它们保存为 putParcelableArrayList

标签: android arraylist sharedpreferences


【解决方案1】:

你为什么不把它设为JsonArray?然后将其转换为字符串。之后你可以将这些字符串保存到SharedPreferences。下面是如何制作 JsonArray 并将其转换为字符串:

JsonArray jsArray = new JsonArray(arr_selected_items);
String strArray = jsArray.toString(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2013-09-11
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多