2015-08-08 105 views
0

目前我正在尝试开发Android移动/磨损应用程序,并且遇到了需要将包含在移动设备的Hashmap中的数据发送到磨损设备的问题。我查看了Android开发人员指南,看起来我必须使用DataMap,但我仍然不知道如何将HashMap数据存储在DataMap中,并正确检索磨损设备上的信息。将HashMap数据从移动设备传输到Android Wear

如果有人可以创建这个过程的例子,或者指出我如何做到这一点的例子,将不胜感激。

回答

1

这取决于你在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

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,因为你可能会覆盖现有的关键之一创建HashMap。因此,如果您想发送任何其他内容,请在另一个DataMap上使用putDataMap (String key, DataMap value)方法将此DataMap嵌套在另一个内。

1

您应该将DataMap看作是一个修剪下来的Bundle,其中支持原始类型(以及更多);一个HashMap可以包含任何类型的对象,这不是DatMap支持的东西,因此不存在将一个映射到另一个的API。您可以遍历您的HasMap并使用DataMap.put **()方法为受支持的数据类型构建DataMap;如果你有一个DataMap不支持的对象,你需要序列化这种或那种方式(比如说,构建你的对象的json表示),然后把它放到DataMap中。除此之外,没有什么不可思议的;根据我描述的内容构建一个DataMap,然后跨设备同步这些数据,并在另一端获取一个DataMap并反转该过程以从DataMap填充一个HashMap。

相关问题