2014-12-12 5 views
0

Я пытаюсь заполнить 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); 
     } 
+0

Это может быть вызвано тем, что вторая активность по-прежнему жива. Как насчет загрузки Ваш список снова в onResume()? Или call finish() во втором действии, когда вы вернетесь к основному ... – Opiatefuchs

+0

@ Opiatefuchs-попробовал, но не загрузил список снова – coder

+0

Я уверен, что вы вставили неправильный код. Но здесь вы сохраняете только список, вы получаете то же самое, что и сохранение. – Carnal

ответ

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>()); 
+0

@ Haresh-Где я могу добавить их? В Onresume второй активности? – coder

+0

Да get String Установить в OnResume и обновить строку String в SharedPreferences при добавлении нового элемента? –

+0

Да, его работа, но когда я нажимаю кнопку во втором действии, она загружает список, но я хочу, чтобы он загружался, как только активность загружалась – coder

0

На задней печати второй активности сначала очистить общий предпочтение и снова установить обновленный набор mycategory для общих предпочтений и в первом действии переопределить метод onResume, и их вы снова установите адаптер списка

Смежные вопросы