我想获取某个位置的经度和纬度坐标,并将其保存在ArrayList中,然后将此列表提交到SharedPreference文件,以便在地图加载所有以前的位置时,可以使用来自SharedPreference文件的数据使用标记设置。
我只知道,SharedPreference将仅存储原始数据类型,而不存储数组。
我的问题是,有人知道通过共享首选技术还是通过任何其他方法来持久化此数据?
任何输入表示赞赏。
最佳答案
1-创建一个类,并放置要存储的所有内容(例如arraylist
和latitude
的longitude
),并使该类实现Serializable
接口。
class MyBundle implements Serializable {
ArrayList<Double> mLat;
ArrayList<Double> mLan;
MyBundle( ArrayList<Double> latitude, ArrayList<Double> longitude ){
mLat = latitude;
mLan = longitude;
}
}
2-将其写入文件:
ObjectOutputStream oos = null;
FileOutputStream fout = null;
try{
FileOutputStream fout = new FileOutputStream("Your file path");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(mb); // mb is an instance of MyBundle
} catch (Exception ex) {
e.printStackTrace();
}finally {
if(oos != null){
oos.close();
}
}
并收回一切:
ObjectInputStream objectinputstream = null;
try {
streamIn = new FileInputStream("Your file address");
objectinputstream = new ObjectInputStream(streamIn);
MyBundle mb = (MyBundle) objectinputstream.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(objectinputstream != null){
objectinputstream .close();
}
}