我正在尝试使用自定义适配器填充listview
并使用shared preferences
保存它,如下所示。
保存列表:
Set<String> mycategory = new HashSet<String>(MyCategory);
PreferenceManager.getDefaultSharedPreferences(CategoryList.this)
.edit()
.putStringSet("MyCategory", mycategory)
.commit();
退回清单:
Set<String> mycategory = PreferenceManager.getDefaultSharedPreferences(AddItems.this)
.getStringSet("MyCategory", new HashSet<String>());
ArrayList<String> CategoryList = new ArrayList<String>(mycategory);
MyAddedList.addAll(CategoryList);
adp.notifyDataSetChanged();
我的场景:首先点击MainActivity
中的一个按钮,转到second activity
,我在第二个活动中有一个button
,可以在我的列表视图中添加一些项目,效果非常好,现在如果我使用启用home button
向上导航到MainActivity,如果我回到第二个活动,则列表为empty
。
现在我如何retain
数据如果我回到same
活动..
我不想使用任何数据库,但想知道使用共享偏好。
编辑:
单击按钮时,我在对话框中调用它:
lv = (ListView) findViewById(R.id.itemscategoryView);
adp = new MyCategoryAdapter(CategoryList.this, MyCategory);
/*
* adp = new ArrayAdapter<String>( MainActivity.this, R.layout.list,
* R.id.textView, MyList);
*/
lv.setAdapter(adp);
// setup a dialog window
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String NewListname = editText.getText().toString();
if (TextUtils.isEmpty(NewListname)) {
return;
} else {
//mylistitem = NewListname;
MyCategory.add(NewListname);
adp.notifyDataSetChanged();
}
Set<String> mycategory = new HashSet<String>(MyCategory);
SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.app_name),MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putStringSet("MyCategory", mycategory);
editor.commit();
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create an alert dialog
AlertDialog alert = alertDialogBuilder.create();
alert.show();
}
的onResume:
@Override
public void onResume(){
super.onResume();
SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.app_name),MODE_PRIVATE);
Set<String> mycategory = sharedPreferences.getStringSet("MyCategory", new HashSet<String>());
MyCategory.addAll(mycategory);
}
答案 0 :(得分:1)
使用应用程序SharedPreferences而不是getDefaultSharedPreferences:
SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.app_name),MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putStringSet("MyCategory", mycategory);
editor.commit();
SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.app_name),MODE_PRIVATE);
Set<String> mycategory = sharedPreferences.getStringSet("MyCategory", new HashSet<String>());
答案 1 :(得分:0)
在第二个活动的背面按下首先清除共享首选项并再次将更新的Set mycategory设置为共享首选项,并在第一个活动中覆盖onResume方法,并再次设置列表适配器