在同一活动中重新加载ListView

时间:2014-12-12 08:59:17

标签: android listview android-listview sharedpreferences

我正在尝试使用自定义适配器填充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);
        }

2 个答案:

答案 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方法,并再次设置列表适配器