2013-04-08 3 views
0

문제는 바로 hashmap에서 값을 가져 오려고하면 null이 반환된다는 것입니다. 태그는 markermarker에 대한 몇 가지 간단한 정보를 보유하는 클래스가hashMap을 사용하여 비교 결과를 얻지 못했습니다.

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

는 구글지도 marker입니다 :

은 내가 hashMap 인스턴스를 가지고있다.

나는이 모든 mapController 관련 모든 googleMap 다루는 클래스입니다

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

에서 일어나는 활동의 시작 theHashMap에 추가 할 수 있습니다.

mapController. AddMarker은지도에 추가 된 을 반환합니다. hashMap이 채워진 후에는 나중에 참조 할 수 있도록 onMarkerClickListener으로 전달됩니다. 이 채워진 후

이 전달됩니다. marker가 클릭 된 marker입니다

은 내가 marker listener 내에서 hashMap.get(marker);를 호출합니다. 그것은 항상 null을 반환

, 내가 onMarkerClick 수신기 내부의 hashMap는 별도의 인스턴스 때문에이 될 수있다 생각하지만 원래의 포인터를 만드는 시도하고 작동하지 않았다, 나는 또한 hashMap.get(marker.getTitle());을 시도하고 marker.getID() 생각에 그것은 타이틀을 비교할 것이지만 같은 결과로 끝났습니다.

요청한 경우 더 많은 정보를 추가 하겠지만 현재는 클릭 한 마커에 따라 hashMap에서 값을 가져 오는 다른 방법이 있습니까?

답변

1

코드에서이 hashMap의 hashMap.put(marker,key);은 key -> custom obje ct (매퍼)를 사용했습니다.

따라서 키를 호출 할 때 null을 반환합니다. provide key (mapper) 객체가 with put (mapper) key.

일치해야하는 위치 오버라이드가 동일하고 매퍼 클래스 해시 방법은이 문제를 해결하기에 당신이 있습니다.

편집 :

당신의 keyHashMap에서이 mapper object(custom object)입니다. HashMap에서 사용자 정의 객체 (Mapper 객체)가 중요하므로 정확한 값을 가져 오려면 override이 같고 hashcodeMapper class이어야합니다. 내가 theHashMap.put (마커 키, 태그 값)`에서, 당신이 무슨 뜻인지 이해하기 위해 사투를 벌인거야

If key as Primitives(int) or String Object, no need to do the above thing. 
+0

죄송합니다'키 사용자 정의 개체, 그래서 그게 int로, 문자열 등 대신을 기대 의미 하는가 커스텀 객체? –

관련 문제