如何将共享首选项数据保存到ArrayList然后显示在ListView上?

时间:2015-10-03 19:21:37

标签: java android sharedpreferences

我正在尝试将键/值对数据从我的共享首选项复制到ArrayList,然后在ListView上显示它们,但是当我使用HashMap时,我收到此错误“不兼容类型”:

SharedPreferences sharedPref = getSharedPreferences("STData",  Context.MODE_PRIVATE);
//to edit the data or add data inside my file "STData"
SharedPreferences.Editor editor = sharedPref.edit();

//create an Arraylist to store values from the sharedPref Object
ArrayList<String> STArrayList = new ArrayList<String>();

for (HashMap<String, String> map : STArrayList)

    for (Map.Entry<String, String> entry : map.entrySet())
    {
        editor.putString(entry.getKey(), entry.getValue());
        editor.commit();

        String savedPref = sharedPref.getString(entry.getKey(), "");
        STArrayList.add(savedPref);
        Toast.makeText(getApplicationContext(),savedPref, Toast.LENGTH_LONG).show();

    }

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

    SharedPreferences sharedPref = getSharedPreferences("STData", Context.MODE_PRIVATE);
    //to edit the data or add data inside my file "STData"
    SharedPreferences.Editor editor = sharedPref.edit();

    //create an Arraylist to store values from the sharedPref Object
    ArrayList<String> STArrayList = new ArrayList<String>();
    Map<String, String> map = (Map<String, String>) sharedPref.getAll();

    for (Map.Entry<String, String> entry : map.entrySet()) {
        editor.putString(entry.getKey(), entry.getValue());
        editor.commit();

        String savedPref = sharedPref.getString(entry.getKey(), "");
        STArrayList.add(savedPref);
        Toast.makeText(getApplicationContext(), savedPref, Toast.LENGTH_LONG).show();
    }

但是我仍然不确定你想要实现什么 - 因为首先你从共享首选项中获取所有值,然后迭代它,然后在该循​​环中再次将这些值放到共享首选项中: editor.putString(entry.getKey(), entry.getValue()); editor.commit(); 我认为以上几行不是必需的。

最后一件事 - 您必须确保您在共享首选项中保留的所有值都是字符串,当您有不同的内容时,Map<String, String> map = (Map<String, String>) sharedPref.getAll();将抛出ClassCastException。