0

Wenn meine MapActivity öffnet, fordere ich einige Informationen aus meiner Firebase-Datenbank, die diese Daten für bestimmte Hotels enthält und danach erstellt Marker mit geladenen Daten .. Ich habe versucht mit Schnipsel, aber wenn meine Rezension zu lang ist, kann es nicht zeigen ..wie Textview Text in Info-Fenster ändern, aus der Liste der Strings

@Override 
    public void onLoaded(String name, double lat, double lon, String author, float foodRating,float serviceRating,float comfortRating,float averageRating, String review) { 
     reviewList.add(review); 

     LatLng position = new LatLng(lat, lon); 
     marker = mGoogleMap.addMarker(new MarkerOptions().title(name) 
       .position(position) 
       .snippet("REVIEW: \n" + review + "\n").snippet(String.valueOf(averageRating))); 
    } 

so setzte ich InfoAdapter Zuhörer mit seiner Methode:

@Override 
    public View getInfoWindow(Marker marker) { 
     View view = LayoutInflater.from(this).inflate(R.layout.info_window, null, false); 
     TextView reviewTextView = (TextView) view.findViewById(R.id.review); 
     reviewTextView.setText(""); 
     return view; 
    } 

und jetzt würde ich mag den Text ändern in reviewTextView, wenn ich auf einen anderen Marker klicke, um jeden Marker anzuzeigen (jedes Hotel) Bewertung ...

Ich habe versucht, alle Beiträge in onLoaded Verfahren in Arraylist speichern reviewList genannt, aber jetzt bin ich nicht sicher, wie diese Bewertungen für einen bestimmten Marker ziehen ..

Antwort

0

ein Map Verwenden statt ein ArrayList, und legte die Bewertungen in die Map in der onLoaded() Methode mit den Marker s IDs als Schlüssel. Im getInfoWindow() Verfahren, rufen Sie die Rezension von der Map mit der ID des Marker eingeleitet.

private Map<String, String> reviewMap = new HashMap<>(); 
... 

@Override 
public void onLoaded(String name, double lat, double lon, String author, 
        float foodRating, float serviceRating, float comfortRating, 
        float averageRating, String review) { 

    LatLng position = new LatLng(lat, lon); 
    marker = mGoogleMap.addMarker(new MarkerOptions().title(name) 
            .position(position) 
            .snippet("REVIEW: \n" + review + "\n") 
            .snippet(String.valueOf(averageRating))); 

    reviewMap.put(marker.getId(), review); 
} 
... 

@Override 
public View getInfoWindow(Marker marker) { 
    View view = LayoutInflater.from(this).inflate(R.layout.info_window, null, false); 
    TextView reviewTextView = (TextView) view.findViewById(R.id.review); 
    String review = reviewMap.get(marker.getId()); 
    reviewTextView.setText(review); 
    return view; 
} 
+0

Tnx Mike! Ich musste nur reviewMap in Map ändern reviewMap = new HashMap <>(); weil marker.getId(); ist ein String Wert – joe

+0

Hoppla, ja, du hast Recht. Ich schätze, ich habe die Klassenzusammenfassung nicht genau genug betrachtet. Entschuldigen Sie. Ich bin froh, dass du es herausgefunden hast. Prost! –