2016-11-02 1 views

Antwort

0

Ohne mehr von Ihrem Code zu sehen, meine Vermutung ist, dass ihre lat/lng Werte die gleichen sind, aber sie sind nicht das gleiche Objekt. Wenn Sie das LatLng-Objekt in Google APIs the equal method verwenden, werden nur die Werte für lat und long verglichen, nicht, dass es sich um dasselbe Objekt handelt.

Das Sparsearray enthält also nur eines der Objekte und gibt -1 zurück, weil das andere im Sparsearray nicht existiert.

1

Intern speichert SparseArray Werte im Array Objects. Im indexOfValue(E value) Verfahren wird die value mit den Array-Elementen verglichen by reference (not logical value):

public int indexOfValue(E value) { 
    for (int i = 0; i < mSize; i++) 
     if (mValues[i] == value) 
      return i; 

    return -1; 
} 

Variablen latLng und latlng1 beziehen sich auf verschiedene Objekte im Speicher, obwohl sie logisch gleich sind.

Verwandte Themen