【发布时间】:2015-08-08 18:03:25
【问题描述】:
目前我正在尝试开发一个 Android 移动/穿戴应用程序,我遇到了一个问题,我需要将 Hashmap 中包含的数据从移动设备发送到穿戴设备。我查看了 Android 开发人员指南,似乎我必须使用 DataMap,但我仍然不知道如何将 HashMap 数据存储在 DataMap 中并正确检索穿戴设备上的信息。
如果有人可以创建此过程的示例,或向我指出如何执行此操作的示例,将不胜感激。
【问题讨论】:
目前我正在尝试开发一个 Android 移动/穿戴应用程序,我遇到了一个问题,我需要将 Hashmap 中包含的数据从移动设备发送到穿戴设备。我查看了 Android 开发人员指南,似乎我必须使用 DataMap,但我仍然不知道如何将 HashMap 数据存储在 DataMap 中并正确检索穿戴设备上的信息。
如果有人可以创建此过程的示例,或向我指出如何执行此操作的示例,将不胜感激。
【问题讨论】:
这取决于您的HashMap 中有哪些类型,但假设您有HashMap<String, String>,您只需检查所有值并将它们复制到DataMap。
public static DataMap toDataMap(HashMap<String, String> hashMap) {
DataMap dataMap = new DataMap();
for (Map.Entry<String, String> entry : hashMap.entrySet()) {
dataMap.putString(entry.getKey(), entry.getValue());
}
return dataMap;
}
然后从DataMap创建HashMap
public static HashMap<String, String> fromDataMap(DataMap dataMap) {
HashMap<String, String> hashMap = new HashMap<String, String>();
for (String key : dataMap.keySet()) {
hashMap.put(key, dataMap.getString(key));
}
return hashMap;
}
当然记得不要在生成的DataMap 中存储任何其他内容,因为您可能会覆盖现有密钥之一。因此,如果您想发送其他任何内容,您应该在另一个 DataMap 上使用 putDataMap (String key, DataMap value) 方法将这个 DataMap 嵌套在另一个 DataMap 中。
【讨论】:
您应该将 DataMap 视为一个精简的 Bundle,其中支持原始类型(以及更多); HashMap 可以包含任何类型的对象,这不是 DatMap 支持的,因此没有 api 可以将一个对象映射到另一个对象。您可以遍历您的 HasMap 并使用 DataMap.put**() 方法为支持的数据类型构建 DataMap;如果您有一个 DataMap 不支持的对象,则需要以一种或另一种方式序列化(例如,构建对象的 json 表示),然后将其放入 DataMap 中。除此之外,没有什么神奇的。根据我描述的内容构建一个 DataMap,然后跨设备同步它并在另一端获取一个 DataMap,然后反转该过程以从 DataMap 填充一个 HashMap。
【讨论】: