0

手头的问题是,当我尝试从中提取值时,hashmap它返回 null。

我有一个hashMap实例:

Map<Marker,Tag> theHashMap = new HashMap<Marker,Tag>();

其中 tag 是一个类,其中包含一些关于 the 的简单信息,marker而 themarker是一个谷歌地图marker

我在这一切发生的活动开始时添加到 theHashMap

theHashMap.put(mapController.AddMarker(new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",), new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",));

wheremapController是一个处理所有googleMap相关内容的类。

mapControllerAddMarker返回marker添加到地图中的那个。

填充后将hashMap其传递给以onMarkerClickListener供以后参考。

hashMap.get(marker);从点击的地方marker listener调用。markermarker

它总是返回 null,我认为这可能是因为hashMaponMarkerClick 侦听器内部是一个单独的实例,但我尝试创建一个指向原始实例的指针但它不起作用,我也尝试过hashMap.get(marker.getTitle());marker.getID()认为它会比较那里的标题但是它以相同的结果结束。

如果需要,我将添加更多信息,但现在,有没有其他方法可以根据单击的标记从 hashMap 中获取值?

4

1 回答 1

1

hashMap.put(marker,key);在此 hashMap的代码中,您使用了键 -> 自定义对象(映射器)。

因此,当您通过键调用时,它会返回 null。provide key (mapper)对象应该匹配的位置with put (mapper) key.

您必须在 Mapper 类中覆盖 equals 和 hashcode 方法来解决这个问题。

编辑:

HashMap你的keymapper object(custom object). 由于自定义对象(映射器对象)是 HashMap 中的关键,我们必须等于override并获取精确值。hashcodeMapper class

If key as Primitives(int) or String Object, no need to do the above thing.
于 2013-04-08T12:00:51.310 回答