我想在本地文件中存储boolean arraylist并在onCreate()中加载值。 我正在使用
public void saveBoolean(String fileName, ArrayList<Boolean> list){
File file = new File(getDir("data", MODE_PRIVATE), fileName);
ObjectOutputStream outputStream = null;
try {
outputStream = new ObjectOutputStream(new FileOutputStream(file));
} catch (IOException e) {
//
}
try {
outputStream.writeObject(list);
} catch (IOException e) {
e.printStackTrace();
}
try {
outputStream.flush();
} catch (IOException e) {
//
}
try {
outputStream.close();
} catch (IOException e) {
//
}
}
和
private ArrayList<Boolean> getSavedBooleanList(String fileName) {
ArrayList<Boolean> savedArrayList = new ArrayList<>();
try {
File file = new File(getDir("data", MODE_PRIVATE), fileName);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
savedArrayList = (ArrayList<Boolean>) ois.readObject();
ois.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return savedArrayList;
}
但在尝试初始化自定义视图列表视图时调用NullPointerExcpetion。我也在保存和加载这样的字符串和整数列表,加载字符串列表但是没有初始化整数和布尔列表,因此长度为0,我的代码在listview位置加载值,因此它调用错误,因为长度为0而inxed是示例2.这里有什么方法可以将整数和布尔列表保存/加载到文件中,或者我必须在保存之前将布尔值和整数转换为字符串? 谢谢你的每一个回复。
答案 0 :(得分:0)
您的方法的替代方法是保存共享首选项
你去:
private void saveToSharedPreference(ArrayList<Boolean> arrayList) {
Gson gson = new Gson();
SharedPreferences sharedPreferences = this.getSharedPreferences("Test", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("ArrayList", gson.toJson(arrayList)).commit();
}
private ArrayList<Boolean> getSharedPreference() {
Gson gson = new Gson();
SharedPreferences sharedPreferences = this.getSharedPreferences("Test", Context.MODE_PRIVATE);
String booleanString = sharedPreferences.getString("ArrayList", null);
TypeToken<ArrayList<Boolean>> typeToken = new TypeToken<ArrayList<Boolean>>() {
};
ArrayList<Boolean> booleen = gson.fromJson(booleanString, typeToken.getType());
return booleen;
}