如何解决你如何在 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 举报,一经查实,本站将立刻删除。