所以我正在制作一个记事本应用程序,它记录输入的日期、主题和正文字段。当我点击我的发布按钮时,所有内容都正确显示在我的 ListView 中,但是当我关闭应用程序并重新打开它时,只有日期保持不变,其他两个值为 NULL。下面是我正在使用的代码。
public class LogList implements Serializable {
private String logDate;
private String logBody;
private String logSubject;
public LogList(String date, String LogBody, String LogSubject){
super();
this.logDate = date;
this.logBody = logBody;
this.logSubject = logSubject;
}
回到我的主类,我的方法应该将三个值保存到 ArrayList lts 中。
private void saveInFile(String subject_text, String date, String body_text ){
LogList lt = new LogList(date, subject_text, body_text);
lts.add(lt);
saveAllLogs();
}
现在,如果我更改新 LogList 中值的顺序,则在我关闭应用程序并重新打开它后,只有第一个值会正确显示。以下是我的 saveAllLogs 方法和我的 loadFromFile 方法。
private ArrayList<String> loadFromFile(){
ArrayList<String> logs = new ArrayList<String>();
try {
FileInputStream fis = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(fis);
while (true) {
LogList lt = (LogList) ois.readObject();
logs.add(lt.toString());
lts.add(lt);
}
}
catch (FileNotFoundException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
catch (ClassNotFoundException e) { e.printStackTrace(); }
return logs;
}
private void saveAllLogs() {
try {
FileOutputStream fos = openFileOutput(FILENAME, 0);
ObjectOutputStream oos = new ObjectOutputStream(fos);
for (LogList lti : lts) {
oos.writeObject(lti);
}
fos.close();
}
catch (FileNotFoundException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
任何帮助将不胜感激!