【发布时间】:2017-03-24 09:03:31
【问题描述】:
我从两天开始尝试,但没有成功。我在片段的 onStop 方法中将 arraylist 保存在内部存储中,然后在 onresume 方法中从内部存储中取回这些数据。我正在检查字符串是否存在于内部存储的数组列表中,以防止在内部存储中存储重复的字符串,但这似乎不起作用。它每次都在内部存储中存储重复的字符串。我不明白我在这里做错了什么。我将非常感谢您的帮助。
public void saveTitleList (){
try {
FileOutputStream fileOutputStream= mContext.openFileOutput("radiotitle2.txt",MODE_PRIVATE);
DataOutputStream dataOutputStream=new DataOutputStream(fileOutputStream);
dataOutputStream.writeInt(stationName2.size());
ArrayList<String> titletest=getTitleList();
for(String line:stationName2){
if(!titletest.contains(line)){//here i am checking for duplicate strings in intenal file
dataOutputStream.writeUTF(line);
Log.d("title2 saved",line);
}
}
dataOutputStream.flush();
dataOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public ArrayList<String> getTitleList(){
ArrayList<String> titleList= new ArrayList<>();
try {
FileInputStream fileInputStream= mContext.openFileInput("radiotitle2.txt");
DataInputStream dataInputStream= new DataInputStream(fileInputStream);
int size=dataInputStream.readInt();
for(int i =0;i<size;i++){
String line=dataInputStream.readUTF();
titleList.add(line);
Log.d("title2 from storage",line);
}
dataInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return titleList;
}
【问题讨论】:
-
使用防止重复的集合
-
感谢您的回答:)
标签: java android android-studio storage internal