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
}
Ich würde vorschlagen, das JSON.NET-Paket zu betrachten. Es ist sehr einfach zu bedienen und gut dokumentiert – Jason
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