2017-12-21 7 views
0

Ich habe Probleme mit Parcelable, um Liste, die innerhalb meiner Klasse sind. Die Werte für meine Strings (partNbr und partdescription) gehen durch, aber ich verliere die Liste irgendwo zwischen dem Write und Read.Parcelable Liste <string>, Liste <int>

Ich hatte nicht viel Glück mit der Serializable oder JSON Route gehen, aber wenn jemand eine gute C# Beispiel für was ich brauche.

Ich bin offen für einen erneuten Versuch. Lese ich die Werte falsch? Jede Hilfe würde sehr geschätzt werden. Der zugehörige Code ist unten veröffentlicht.

public class Part : Java.Lang.Object, IParcelable 
{ 
    public string partNbr { get; set; } 
    public string partDescription { get; set; } 
    public List<string> uomList { get; set; } 
    public List<int> qtyList { get; set; } 

    #region IParcelable Implementation 

    private static readonly PartXParcelableCreator<Part> _creator = 
     new PartXParcelableCreator<Part>((parcel) => new Part(parcel)); 

    [ExportField("CREATOR")] 
    public static PartXParcelableCreator<Part> GetCreator() 
    { 
     return _creator; 
    } 
    public Part(Parcel parcel) 
    { 
     partNbr = parcel.ReadString(); 
     partDescription = parcel.ReadString(); 
     parcel.ReadStringList(uomList); 
     parcel.ReadList(qtyList, null); 
    } 


    public int DescribeContents() 
    { 
     return 0; 
    } 

    public void WriteToParcel(Parcel dest, [GeneratedEnum] ParcelableWriteFlags flags) 
    { 
     //debugging here shows a count of 3 items in uomList and 6 in qtyList 
     dest.WriteString(partNbr); 
     dest.WriteString(partDescription); 
     dest.WriteStringList(uomList); 
     dest.WriteList(qtyList); 
    } 
    #endregion 



} 

public class PartXParcelableCreator<T> : Java.Lang.Object, IParcelableCreator 
    where T : Java.Lang.Object, new() 
{ 
    private readonly Func<Parcel, T> _createFunc; 

    public PartXParcelableCreator(Func<Parcel, T> createFromParcelFunc) 
    { 
     _createFunc = createFromParcelFunc; 
    } 

    #region IParcelableCreator Implementation 
    public Java.Lang.Object CreateFromParcel(Parcel source) 
    { 
     //tried debugging source values here, but List values are null at this point 
     return _createFunc(source); 
    } 

    public Java.Lang.Object[] NewArray(int size) 
    { 
     return new T[size]; 
    } 
    #endregion 
} 
+1

Ich würde vorschlagen, das JSON.NET-Paket zu betrachten. Es ist sehr einfach zu bedienen und gut dokumentiert – Jason

+0

Ich versuche das, aber das Objekt kommt in der nächsten Aktivität null. Hier ist der Code, in dem ich das Objekt serialisieren möchte: intent.PutExtra ("PART", JsonConvert.SerializeObject (myPart)); und wo ich Deserialisierung bin: Teil inPart = JsonConvert.DeserializeObject (Intent.GetStringExtra ("PART")); – bashby82

Antwort

1

Wie @ Jason sagte: Sie versuchen, JSON.NET Paket mit könnte.

Ich versuche das, aber das Objekt kommt in der nächsten Aktivität null heraus.

Sie erstreckt sich nicht die Java.Lang.Object, ändern Sie Ihre Part Klasse wie folgt:

public class Part 
{ 
    public string partNbr { get; set; } 
    public string partDescription { get; set; } 
    public List<string> uomList { get; set; } 
    public List<int> qtyList { get; set; } 
} 

Dann sollte es Arbeit sein.

+0

Wenn ich diese 100x upvote könnte ich würde. Vielen Dank vielen! Ich habe viel länger damit herumgespielt, als ich zugeben möchte. – bashby82

Verwandte Themen