Java 正在尝试将自定义对象数组保存到Android
所以我制作了一个记事本应用程序,记录输入的日期、主题和正文字段。当我点击我的post按钮时,所有内容都正确地显示在我的ListView中,但是当我关闭应用程序并重新打开它时,只有日期保持不变,其他两个值为空。下面是我正在使用的代码Java 正在尝试将自定义对象数组保存到Android,java,android,Java,Android,所以我制作了一个记事本应用程序,记录输入的日期、主题和正文字段。当我点击我的post按钮时,所有内容都正确地显示在我的ListView中,但是当我关闭应用程序并重新打开它时,只有日期保持不变,其他两个值为空。下面是我正在使用的代码 public class LogList implements Serializable { private String logDate; private String logBody; private String logSubject; public LogL
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中
private void saveInFile(String subject_text, String date, String body_text ){
LogList lt = new LogList(date, subject_text, body_text);
lts.add(lt);
saveAllLogs();
}
现在,如果我更改新日志列表中值的顺序,在我关闭并重新打开应用程序后,只有第一个值会正确显示。下面是我的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(); }
}
private ArrayList loadFromFile(){
ArrayList日志=新建ArrayList();
试一试{
FileInputStream fis=openFileInput(文件名);
ObjectInputStream ois=新ObjectInputStream(fis);
while(true){
LogList lt=(LogList)ois.readObject();
添加(lt.toString());
添加(lt);
}
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOE异常){e.printStackTrace();}
catch(ClassNotFoundException e){e.printStackTrace();}
返回日志;
}
私有void saveAllLogs(){
试一试{
FileOutputStream fos=openFileOutput(文件名,0);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
用于(日志列表lti:lts){
oos.writeObject(lti);
}
fos.close();
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOE异常){e.printStackTrace();}
}
任何帮助都将不胜感激 首先
public LogList(String date, String LogBody, String LogSubject){
super();
this.logDate = date;
this.logBody = logBody;
this.logSubject = logSubject;
}
这似乎是错误的。因为您已将参数名称大写,但将成员设置为小写名称
你是说:
public LogList(String date, String logBody, String logSubject){
super();
this.logDate = date;
this.logBody = logBody;
this.logSubject = logSubject;
}
编辑:不影响代码的小事:您不需要在构造函数中调用
super()
,因为您没有扩展任何类。“date”是正确的。从不使用参数LogBody和LogSubject,因为变量(“LogBody”)的情况与参数(“LogBody”)的情况不同。我讨厌这样一个小错误花费了我几个小时试图修复。谢谢你的帮助!切换了变量,现在可以正常工作了。谢谢你的回答。我切换了变量,现在可以正常工作了。