手头的问题是,当我尝试从hashmap
中提取值时,它会返回null。
我有hashMap
个实例:
Map<Marker,Tag> theHashMap = new HashMap<Marker,Tag>();
其中tag是一个类,其中包含有关marker
的一些简单信息,而marker
是一个Google地图marker
。
我在活动开始时添加到HashMap,这一切都发生在
中theHashMap.put(mapController.AddMarker(new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",), new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",));
其中mapController
是一个处理与googleMap
相关的所有内容的类。
而mapController
。AddMarker
会返回已添加到地图中的marker
。
hashMap
后将其传递给onMarkerClickListener
以供日后参考。
我打电话
来自hashMap.get(marker);
marker listener
内的marker
marker
是被点击的hashMap
。
它总是返回null,我认为这可能是因为onMarkerClick侦听器中的hashMap.get(marker.getTitle());
是一个单独的实例,但是我尝试制作指向原始的指针而它没有用,我也试过{{1并且marker.getID()
认为它会比较那些标题,但它以相同的结果结束。
如果需要,我会添加更多信息但是现在,还有其他方法可以根据点击的标记从hashMap中获取值吗?
答案 0 :(得分:1)
在此哈希地图中的代码hashMap.put(marker,key);
中,您使用了密钥 - &gt; custom obje ct(mapper)。
因此,当您通过键调用时,它将返回null。 provide key (mapper)
对象应与with put (mapper) key.
你必须在Mapper类中覆盖equals和hashcode方法来解决这个问题。
修改强>
HashMap
key
mapper object(custom object)
为override
。由于自定义对象(Mapper对象)是HashMap中的关键,我们必须hashcode
等于Mapper class
If key as Primitives(int) or String Object, no need to do the above thing.
以获取精确值。
{{1}}