无法使用<String> JAVA 将 ArrayList 存储在 Android 的 SharedPreferences 中?



这是在Android中保存ArrayList的代码

 myAList.add(sEdit.getString("val"+j,""));

通过指示

对于类型sharedPreferences。方法getString(string)是未定义的。

public static void setValuesInSession(Context c,ArrayList<String> myArrayList)
{
    SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
    SharedPreferences.Editor sEdit=sPrefs.edit();
    for(int i=0;i<myArrayList.size();i++)
    {
             sEdit.putString("val"+i,myArrayList.get(i));
    }
     sEdit.putInt("size",myArrayList.size());
     sEdit.commit();
}
public static ArrayList<String> getValuesOfSession(Context c)
{
    SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
    SharedPreferences.Editor sEdit=sPrefs.edit();
    ArrayList<String> myAList=new ArrayList<String>();
    int size=sPrefs.getInt("size",0);
    for(int j=0;j<size;j++)
    {
     // Log.i("MYlIST ADD",""+);
         myAList.add(sEdit.getString("val"+j,""));
    }
    return myAList;
}

您正在尝试从编辑器获取字符串值,而不是从共享preferences中检索。

替换

myAList.add(sEdit.getString("val"+j,""));

myAList.add(sPrefs.getString("val"+j,""));

结果

public static ArrayList<String> getValuesOfSession(Context c)
{
    SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
    ArrayList<String> myAList=new ArrayList<String>();
    int size=sPrefs.getInt("size",0);
    for(int j=0;j<size;j++)
    {
     // Log.i("MYlIST ADD",""+);
         myAList.add(sPrefs.getString("val"+j,""));
    }
    return myAList;
}

并且不建议以" S"开头调用本地变量,因为Android代码样式指南鼓励从M。

尝试这个...

for(int i=0;i<myArrayList.size();i++)
    {
             sEdit.putString("val"+i,myArrayList.get(i).toString());
    }

下面是我的代码..我做的与你一样..工作...

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
             SharedPreferences.Editor editor = preferences.edit();
             editor.putInt("Size", languageNames.size());
             for(int i=0; i<languageNames.size(); i++)
             {
                 editor.putString("data" + i, languageNames.get(i).toString());
             }
             editor.putString("ID",id);
             editor.putString("Email", email);
             editor.putString("Birthday", birthday);
             editor.putString("Username", username);
             editor.putString("Location", location);
             editor.putString("Gender", gender);
             editor.commit();

获取数据...

ArrayList<String> languageNames = new ArrayList<String>();
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            int array_size = preferences.getInt("Size", 0);
            id = preferences.getString("ID", "");
            username = preferences.getString("Username", "");
            email = preferences.getString("Email", "");
            birthday = preferences.getString("Birthday", "");
            location = preferences.getString("Location", "");
            gender = preferences.getString("Gender", "");  
            languageNames.clear();
            for(int i=0; i<array_size; i++)
            {
                languageNames.add(preferences.getString("data" + i, "").toString());
            }
       public static ArrayList<String> getValuesOfSession(Context c) {
       SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
       ArrayList<String> myAList=new ArrayList<String>();
       int size=sPrefs.getInt("size",0);
       for(int j=0;j<size;j++)
       {
        // Log.i("MYlIST ADD",""+);
            myAList.add(sPrefs.getString("val"+j,""));
       }
       return myAList;
   }

最新更新