Я пытаюсь заполнить listview
с помощью пользовательского адаптера и сохранить его с помощью shared preferences
, как показано ниже.Reload ListView в той же деятельности
Список Saving:
Set<String> mycategory = new HashSet<String>(MyCategory);
PreferenceManager.getDefaultSharedPreferences(CategoryList.this)
.edit()
.putStringSet("MyCategory", mycategory)
.commit();
Retreiving Список:
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
деятельности ..
Я не хочу использовать любой БД, но хотел бы знать, используя sharedpreferences.
EDIT:
Я звоню это в диалоге, когда нажимается кнопка:
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);
}
Это может быть вызвано тем, что вторая активность по-прежнему жива. Как насчет загрузки Ваш список снова в onResume()? Или call finish() во втором действии, когда вы вернетесь к основному ... – Opiatefuchs
@ Opiatefuchs-попробовал, но не загрузил список снова – coder
Я уверен, что вы вставили неправильный код. Но здесь вы сохраняете только список, вы получаете то же самое, что и сохранение. – Carnal