Autore Topic: Array di LatLng Parcelable  (Letto 418 volte)

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Array di LatLng Parcelable
« il: 29 Dicembre 2013, 11:12:30 CET »
0
Salve. Ho un ArrayList<LatLng> ed ho necessità di non perderne il contenuto nel caso di riavvio dell'activity (rotazione del dispositivo).
So di dover sfruttare l'interfaccia Parcelable ma non capisco esattamente come. Cioè, so che dovrei mettere l'array all'interno
dell'oggetto Bundle tramite putParcelableArray, però non so come trasformare quell'array di LatLng. Suggerimenti?

Ps: Scusate se non è esattamente la sezione adatta.

Post unito: 29 Dicembre 2013, 12:17:32 CET
Risolto (devo avere più fiducia in me stesso  :-P)

Codice: [Seleziona]
import android.os.Parcel;
import android.os.Parcelable;

public class MyLatLng implements Parcelable {

    private double latitude;
    private double longitude;

    public MyLatLng(double lat, double lon) {
        latitude = lat;
        longitude = lon;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int arg) {
        parcel.writeDouble(latitude);
        parcel.writeDouble(longitude);
    }

    public static final Parcelable.Creator<MyLatLng> CREATOR = new Creator<MyLatLng>() {

        @Override
        public MyLatLng createFromParcel(Parcel parcel) {
            double latitude = parcel.readDouble();
            double longitude = parcel.readInt();
            return new MyLatLng(latitude, longitude);
        }

        @Override
        public MyLatLng[] newArray(int size) {
            return new MyLatLng[size];
        }
    };

    //Metodi get/set

    public double getLatitude() {
        return latitude;
    }

    public double getLongitude() {
        return longitude;
    }
}

Poi nell'activity principale:

Codice: [Seleziona]
//Recupero i dati precedentemente salvati se c'è stato un riavvio dell'activity
        if(savedInstanceState != null) {
            mapType = savedInstanceState.getInt("map_type", GoogleMap.MAP_TYPE_NORMAL);
            //Ridisegno il percorso
            mLatLngGpxList = savedInstanceState.getParcelableArrayList("path");
            drawRoute();
        }

Codice: [Seleziona]
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("map_type", mapType);
        outState.putParcelableArrayList("path", mLatLngGpxList);
    }
« Ultima modifica: 29 Dicembre 2013, 12:17:32 CET da Elmvor, Reason: Merged DoublePost »