Jul,

Parcelable implementation looks good, except for the questionable cast to ArrayList<Restaurant>, but that shouldn't have any effect.

What error are you getting, exactly?

-- Kostya

05.07.2010 20:20, jul пишет:
Hi,

I want to save a list of Parcelable Restaurant objects on
onSaveInstanceState. I created a Restaurant class extending Parcelable
and a RestaurantList object, both shown below. In my main activity I
fill my RestauranList directly from json internet data using GSON:

     restaurantList = gson.fromJson(r, RestaurantList.class);

Now, when I want to save the List of Restaurant objects using

     protected void onSaveInstanceState(Bundle outState) {

         if (restaurantList != null ) {
             outState.putParcelableArrayList("restoList",
(ArrayList<Restaurant>)restaurantList.getRestaurants());
        }

         super.onSaveInstanceState(outState);
     }

I get an error, I guess because Parcelable data are not written. How
should I do it? Do I have to create an array of Parcel objects in my
main activity and fill it by calling writeToParcel for each of the
Restaurant objects?

thanks for any suggestion

Julien



**************************RestaurantList
class**************************

public class RestaurantList {

     private List<Restaurant>  restaurants = new
ArrayList<Restaurant>();

     public int getSize() {
         return restaurants.size();
     }

     public List<Restaurant>  getRestaurants() {
         return this.restaurants;
     }

     public Restaurant getRestaurant(int i) {
         return this.restaurants.get(i);
     }

     public void setRestaurants(List<Restaurant>  restaurants) {
         this.restaurants = restaurants;
     }

     public List<String>  getRestaurantNames() {

         List<String>  restaurantNames = new ArrayList<String>();

         for (int i=0; i<this.restaurants.size(); i++) {

restaurantNames.add(this.restaurants.get(i).getName());
         }

         return restaurantNames;
     }

}

**************************Restaurant class**************************

public class Restaurant implements Parcelable{

     private String name;
     /* more stuff */

     public Restaurant() {}

     public String getName() {
         return this.name;
     }

     public void setName(String name) {
         this.name = name;
     }

     public void writeToParcel(Parcel out, int flags) {

         out.writeStringArray(new String[] {this.name, /* more
stuff*/});

     }

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

             public Restaurant createFromParcel(Parcel in) { return new
Restaurant(in); }

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

     };


     private Restaurant(Parcel in) {

         String[] stringData = new String[6];

         in.readStringArray(stringData);

         this.name = stringData[0];
                 /* more stuff */

     }

     public int describeContents(){
         return 0;
     }


}



--
Kostya Vasilev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to