如何在共享首选项(android)中保存listView

如何在共享首选项(android)中保存listView,android,listview,sharedpreferences,Android,Listview,Sharedpreferences,我想将列表中的元素保存在SharedReferences中。我知道SharedReferences只保存了简单的数据。可以吗 我的活动课: List<String> tasks; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent

我想将列表中的元素保存在SharedReferences中。我知道SharedReferences只保存了简单的数据。可以吗

我的活动课:

List<String> tasks;
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_sms_number);

    tasks = new ArrayList<String>();

    Button add = (Button) findViewById(R.id.button);
    final EditText editText = (EditText) findViewById(R.id.editText);

    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,tasks);
    ListView listView = (ListView) findViewById(R.id.listView1);
    listView.setAdapter(adapter);

    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(editText, 0);

            String value = editText.getText().toString();
            tasks.add(value);

            adapter.notifyDataSetChanged();
        }
    });

}
列出任务;
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u sms\u number);
tasks=newarraylist();
按钮添加=(按钮)findViewById(R.id.Button);
final EditText EditText=(EditText)findViewById(R.id.EditText);
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,tasks);
ListView ListView=(ListView)findViewById(R.id.listView1);
setAdapter(适配器);
add.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT\u方法\u服务);
imm.showSoftInput(编辑文本,0);
字符串值=editText.getText().toString();
任务。增加(价值);
adapter.notifyDataSetChanged();
}
});
}

}

您可以将列表存储为一个集合,然后在读取SharedReferences时将其转换回列表。注意:如果您的字符串需要特别地排序,这显然是不起作用的

tasksList = new ArrayList<String>();
Set<String> tasksSet = new HashSet<String>(tasksList);
PreferenceManager.getDefaultSharedPreferences(context)
    .edit()
    .putStringSet("tasks_set", tasksSet)
    .commit();
tasksList=newarraylist();
Set tasksSet=newhashset(tasksList);
PreferenceManager.GetDefaultSharedReferences(上下文)
.edit()
.putstrengset(“任务集”,任务集)
.commit();
然后当你读到它时:

Set<String> tasksSet = PreferenceManager.getDefaultSharedPreferences(context)
    .getStringSet("tasks_set", new HashSet<String>());
List<String> tasksList = new ArrayList<String>(tasksSet);
Set tasksSet=PreferenceManager.getDefaultSharedReferences(上下文)
.getStringSet(“tasks_set”,new HashSet());
List tasksList=new ArrayList(tasksSet);

您可以将列表存储为一个集合,然后在读取SharedReferences时将其转换回列表。您能告诉我它应该是什么样子吗?