2015-05-31 11 views
5

इसलिए मैंने पहले सूचियों को पार्सल किया है, हालांकि मैं अपने GameBoard ऑब्जेक्ट को पार्सल करने की कोशिश कर रहा हूं, जिसमें वास्तव में List<List<Tile>> है। Tile पार्ससेलबल लागू करता है, लेकिन मुझे यकीन नहीं है कि List<List> को कैसे पार्सल करना है। यहाँ मैं क्या करने की कोशिश की है या नहीं:पार्सल पार्ससेल ऑब्जेक्ट की सूची की सूची

public class GameBoard implements Parcelable { 
    private String _id; 
    public String getId() { return _id; } 
    public void setId(String id) { _id = id; } 

    private List<List<Tile>> _tiles; 
    public List<List<Tile>> getTiles() { return _tiles; } 
    public void setTiles(List<List<Tile>> tiles) { _tiles = tiles; } 

    public GameBoard(Parcel in) { 
     _id = in.readString(); 
     in.readList(_tiles, ArrayList.class.getClassLoader()); 
    } 

    public GameBoard() { 

    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeString(_id); 
     parcel.writeList(_tiles); 
    } 

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

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

टाइल वर्ग को सही ढंग से लागू करता है parcelable, मैं सिर्फ बिल्कुल यकीन है कि कैसे पढ़ने/List<List>> बारे में जब इस वर्ग के टुकड़े टुकड़े करना करने के लिए नहीं कर रहा हूँ। कोई विचार?

+3

यहाँ पिछले प्रश्न से एक विचार है; http://stackoverflow.com/a/16529389/680519। – harism

+0

@ धर्मवाद सहमत हुए, यह काम करेगा। – EpicPandaForce

+0

@harism लिंक के लिए धन्यवाद, एक कामकाजी समाधान पाने में कामयाब रहे। –

उत्तर

1

टिप्पणियों के आधार पर, मैं अपने कस्टम वर्ग के साथ ArrayList वर्ग बढ़ाया और parcelable लागू किया: मेरे दूसरे वर्ग के लिए

public class TileList extends ArrayList<Tile> implements Parcelable { 

    public TileList(){ 
     super(); 
    } 

    protected TileList(Parcel in) { 
     in.readTypedList(this, Tile.CREATOR); 
    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeTypedList(this); 
    } 

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

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

और मामूली परिवर्तन:

public class GameBoard implements Parcelable { 
    private String _id; 
    public String getId() { return _id; } 
    public void setId(String id) { _id = id; } 

    private List<TileList> _tiles; 
    public List<TileList> getTiles() { return _tiles; } 
    public void setTiles(List<TileList> tiles) { _tiles = tiles; } 

    public GameBoard(Parcel in) { 
     _id = in.readString(); 
     _tiles = new ArrayList<>(); 
     in.readTypedList(_tiles, TileList.CREATOR); 
    } 

    public GameBoard() { 

    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeString(_id); 
     parcel.writeTypedList(_tiles); 
    } 

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

     public GameBoard[] newArray(int size) { 
      return new GameBoard[size]; 
     } 
    }; 
} 
संबंधित मुद्दे