我想获取某个位置的经度和纬度坐标,并将其保存在ArrayList中,然后将此列表提交到SharedPreference文件,以便在地图加载所有以前的位置时,可以使用来自SharedPreference文件的数据使用标记设置。

我只知道,SharedPreference将仅存储原始数据类型,而不存储数组。

我的问题是,有人知道通过共享首选技术还是通过任何其他方法来持久化此数据?

任何输入表示赞赏。

最佳答案

1-创建一个类,并放置要存储的所有内容(例如arraylistlatitudelongitude),并使该类实现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();
     }
   }

10-07 19:20
查看更多