我知道,这个问题已经在许多线程中得到了解决,但我无法弄清楚这一点.
所以我设置了一个像这样的共享首选项:
所以我设置了一个像这样的共享首选项:
SharedPreferences prefs = MainActivity.this.getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putStringSet(spinnerName,myValueSet ); editor.apply();
我读了这样的偏好:
SharedPreferences prefs = MainActivity.this.getPreferences(MODE_PRIVATE); Set<String> spinnerValuesSet = null; spinnerValuesSet = prefs.getStringSet(spinnerName,null );
一切正常,除了我的更改在此活动运行时可见,即 – 我显示SharedPreferences中的值,允许用户删除或添加然后更新ListView.这有效,但在我重新启动应用程序后,我得到了初始值.
例如,我的方法是从列表中删除一个值,更新SharedPreferences中的值并更新ListView
Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { SharedPreferences prefs = MainActivity.this.getPreferences(MODE_PRIVATE); Set<String> spinnerValuesSet = prefs.getStringSet(spinnerName,null ); for (String s : spinnerValuesSet) { if(s == currentSelectedItemString) { spinnerValuesSet.remove(s); SharedPreferences.Editor editor = prefs.edit(); editor.putStringSet(spinnerName,spinnerValuesSet ); editor.apply(); break; } } updateListValues(); } });
这是更新ListView的方法:
private void updateListValues() { SharedPreferences prefs = MainActivity.this.getPreferences(MODE_PRIVATE); Set<String> spinnerValuesSet = prefs.getStringSet(spinnerName,null ); if(spinnerValuesSet.size() > 0) { names = new ArrayList<String>(); names.clear(); int k=0; for (String s : spinnerValuesSet) { names.add(k,s); k++; } namesAA = new ArrayAdapter<String> ( this,android.R.layout.simple_list_item_activated_1,names ); myList.setAdapter(namesAA); }
}
任何帮助深表感谢.