微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你如何在 Kotlin 中将 Parcelable 序列化为字符串?

如何解决你如何在 Kotlin 中将 Parcelable 序列化为字符串?

我正在 Kotlin 中编写一个 Android 应用程序,并希望将位置类型作为字符串存储到 sqlite 中。位置是一个 Parcelable。 Parcelable 是否有序列化为字符串的方法

我想做这样的事情:

var loc:Location
var str:Sring

... Code to Initialize 'loc'...

str = loc.serilizetoString()

解决方法

您可以将对象转换为 Parcel,然后获取字节(通过调用 Parcel.marshall())并将它们转换为 String 并存储,但您将依赖于Location 的内部实现。更好的方法是编写您自己的方法,将您需要的数据从 Location 对象序列化为 String。例如,像这样:

String s = String.format("%s|%e|%e|%f|%f",location.getProvider(),location.getLatitude(),location.getLongitude(),location.getSpeed(),location.getBearing()
);

当您从数据库中读取它时,您只需要将您的 String 解析为组件部分,创建一个新的 Location 对象并在其上设置各个组件。像这样:

String s; // Location as String
String[] parts = s.split("|");
Location location = new Location(parts[0]);
location.setLatitude(Double.valueOf(parts[1]));
location.setLongitude(Double.valueOf(parts[2]));
location.setSpeed(Float.valueOf(parts[3]));
location.setBearing(Float.valueOf(parts[4]));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。