我知道,这个问题已经在许多线程中得到了解决,但我无法弄清楚这一点.
所以我设置了一个像这样的共享首选项:
所以我设置了一个像这样的共享首选项:
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); }
}
任何帮助深表感谢.
解决方法
原文地址:https://www.jb51.cc/android/310357.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。