2016-03-21 26 views
1

Bir olaydan diğerine bir ArrayList nesnesi MyItem'i iletmeye çalışıyorum. Anladığım kadarıyla MyItem sınıfında Parcable'ı kullanmam gerekiyor. Yani bu i'va bugüne kadar yapılan budur:Android - Parcelable | putParcelableArrayListExtra ("ListItems", listItems);

public class MyItem implements ClusterItem, Parcelable { 
    private LatLng mPosition=null; 
    private String aString; 

    public MyItem(double lat, double lng, String aString) { 
     mPosition = new LatLng(lat, lng); 
     this.aString= aString; 
    } 

    @Override 
    public LatLng getPosition() { 
     return mPosition; 
    } 

    public String getString(){ 
     return aString; 
    } 


    public int describeContents() { 
     return 0; 
    } 


    public void writeToParcel(Parcel dest, int flags) { 
     //dest.writeLngLat ? 
     dest.writeString(postID); 
    } 

    public static final Parcelable.Creator<MyItem> CREATOR 
      = new Parcelable.Creator<MyItem>() { 
     public MyItem createFromParcel(Parcel in) { 
      return new MyItem(in); 
     } 

     public MyItem[] newArray(int size) { 
      return new MyItem[size]; 
     } 
    }; 

    private MyItem(Parcel in) { 
     //mPosition = in.readLngLat ? 
     aString = in.readString(); 
    } 
} 

İlk soru: Nasıl writeToParcel içinde LngLat alanını yazabilirim ve ben yapıcı (içinde Koli) MyItem içinde nasıl decleare ki?

İkinci soru10: Bu kod yeterli olabilir, bu yeterli olacak mı? CluserPosts içinde

    ArrayList<MyItem> listItems = new ArrayList<>(); 
        Iterator<MyItem> items = cluster.getItems().iterator(); 
        while (items.hasNext()) { 
         listItems.add(items.next()); 
        } 
        Intent intent = new Intent(MapsActivity.this, ClusterPosts.class); 
        intent.putParcelableArrayListExtra("oO", listItems); 
        startActivity(intent); 

ve sonra:

Intent intent = getIntent(); 
    ArrayList<MyItem> post = intent.getParcelableArrayListExtra("oO"); 
    for(MyItem item : post){ 
     Log.d("elaela", item.getString()); 
    } 
+0

'LatLng' doğru bir' Parcelable' nedir? – pskink

+0

LatLng, benim tarafından uygulanmayan google maps api'den "varsayılan" nesnedir. Ama ben aslında parcelable –

+0

olduğunu düşünüyorum, bu yüzden "Parcelable", daha sonra okuyun/doğrudan "Parsel" yaz – pskink

cevap

1

Yaz parsel olarak -

dest.writeDouble(mPosition.latitude); 
dest.writeDouble(mPosition.longitude); 
0

sadece hedefe katına ve daha sonra bir pozisyon oluşturmak gibi enlem ve boylam yazabilir.

dest.writeDouble(lat); 
dest.writeDouble(long);