gpt4 book ai didi

java - 使用 parcelable 将项目存储为共享首选项?

转载 作者:IT老高 更新时间:2023-10-28 23:16:42 27 4
gpt4 key购买 nike

我的应用程序中有几个对象 Location 存储在 ArrayList 中,并使用 parcelable 在 Activity 之间移动这些对象。该对象的代码如下所示:

public class Location implements Parcelable{

private double latitude, longitude;
private int sensors = 1;
private boolean day;
private int cloudiness;

/*
Måste ha samma ordning som writeToParcel för att kunna återskapa objektet.
*/
public Location(Parcel in){
this.latitude = in.readDouble();
this.longitude = in.readDouble();
this.sensors = in.readInt();
}

public Location(double latitude, double longitude){
super();
this.latitude = latitude;
this.longitude = longitude;
}

public void addSensors(){
sensors++;
}


public void addSensors(int i){
sensors = sensors + i;
}

+ Some getters and setters.

现在我需要更永久地存储这些对象。我在某处读到我可以序列化对象并保存为 sharedPreferences。我是否还必须实现可序列化,或者我可以用 parcelable 做类似的事情?

最佳答案

由于 parcelable 无助于将您的数据放置在持久存储中(请参阅 StenSoft 的回答),您可以使用 gson 来代替您的位置:

保存位置:

val json = Gson().toJson(location)
sharedPreferences.edit().putString("location", json).apply()

检索位置:

val json = sharedPreferences.getString("location", null)
return Gson().fromJson(json, Location::class.java)

如果您仍在使用 Java,请将 val 替换为 String,将 Gson() 替换为 new Gson(), ::class.java.class 并以分列结束每一行。

关于java - 使用 parcelable 将项目存储为共享首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com