1

Meine App soll Flugzeuge auf einer Karte mit Hilfe von über das Internet gestreamten Daten verfolgen. Ich benutze einen Service, um die Daten zu empfangen, und dann benutze ich Messengers, um Nachrichten zwischen ihr und meiner MainActivity (thanks to this guide) zu senden, die mein Fragment mit einem SupportMapFragment (MainMapFragment) und auch ein RecyclerView Fragment (AircraftListFragment) hat.Wie aktualisiere ich die Position eines Google Map-Markers anhand von Daten, die von einem Socket gestreamt werden?

Jeder Marker befindet sich in einer HashMap mit einem Aircraft-Objekt in MainMapFragment, und die Aircraft-Objekte werden von MainActivity verwaltet. Gibt es etwas wie notifyDatasetChanged() für meine Aktivität, um meine MapFragment zu aktualisieren? Natürlich kann ich nicht ein Verfahren in MainMapFragment wie folgt schreiben:

public void updateAircraftArrayList(ArrayList<Aircraft> updatedAircrafts){ 
    this.aircraftArrayList = updatedAircrafts; 
    updateMarkers(); //Update the Markers on the map 
} 

wie folgt zugegriffen in meinem MainActivity:

class IncomingHandler extends android.os.Handler { 
    @Override 
    public void handleMessage(Message msg){ 
     String aircraftMsg = msg.getData().getString("fromSocket"); 
     Aircraft newAircraft = decodeSbsMessage(aircraftMsg); 
     aircraftArrayList = searchThroughArrayListForAircraft(newAircraft); 
     MainMapFragment.updateAircraftArrayList(aircraftArrayList); 
    } 
} 

Ich habe von EventBus gehört, aber von dem, was ich gehört habe es nicht ist sehr gut für die Handhabung eines konstanten Streams von einem Socket.

Antwort

1

Sie rufen updateAircraftArrayList kann Methode von Ihrem MainActivity:

your_instance_of_MainMapFragment.updateAircraftArrayList(aircraftArrayList) 
+0

Ich bin für vermisste dies bei mir im Augenblick zu lachen, war dieses Problem mein Gehirn für die letzten Tage Abstich. Danke für Ihre Hilfe! – CiaranC94

+0

Gern geschehen. Es ist mir auch passiert :) – ozo

+0

Wenn es Ihr Problem gelöst hat, können Sie es als Antwort akzeptieren. – ozo

Verwandte Themen