保存和读取ArrayList

时间:2017-06-18 14:30:04

标签: java android arraylist save

保存方法(保存列表是一个Arraylist):

public static void saveList(){
    editor.putString("list", Calculate.saveList.toString());
}

我的阅读方法(可能是我的问题所在):

public static void readList(){
    String arrayString= prefs.getString("list", null);
    Calculate.saveList = (ArrayList<String>) Arrays.asList(arrayString.split(","));
}

Logcat错误:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com.tsury.icalorie / com.tsury.icalorie.SavedActivity}:java.lang.NullPointerException:尝试调用虚方法'java.lang.String [] java 。null对象引用上的.lang.String.split(java.lang.String)'

我需要保存那个ArrayList,当然还要稍后阅读。

2 个答案:

答案 0 :(得分:0)

您可以将数组列表转换为json字符串并将其另存为字符串 并读取该json字符串并将其转换为您的对象。

你可以使用Gson库来做到这一点。

执行以下步骤:

1-在Gradle文件中添加此依赖项

tf = TfidfVectorizer(strip_accents='ascii', 
                     analyzer='word',
                     ngram_range=(1,1),
                     min_df = 0,
                     stop_words = stopwords,
                     lowercase = True)

创建一个保留ArrayList

的类
compile 'com.google.code.gson:gson:2.7'

创建MyList类的实例,并在myStrings中添加您的值。

class MyList{
   @SerializedName("myStrings")
   public ArrayList<String> myStrings;
}

然后使用以下行将MyList对象转换为Json:

MyList myListInstance=new MyList(); 
myList.myStrings.add("Peter");
myList.myStrings.add("John");
myList.myStrings.add("Faraz");

并将此json String保存在sharedPreferences

如果要加载数据,请从sharedPreferences读取json字符串,然后使用此行将其转换为对象

String json=new Gson().toJson(myListInstance)

答案 1 :(得分:0)

确保在保存时在编辑器对象上调用.apply().commit()

您也无法将Arrays.asList()投射到ArrayList,您应该使用

创建它
Calculate.saveList = new ArrayList<String>(Arrays.asList(arrayString.split(",")));