我在使用Parcelable
传递我班级中的List时遇到问题。我的字符串的值(partNbr和partdescription)正在通过ok,但我在Write和Read之间的某处丢失了列表。
我在使用Serializable或JSON
路线方面没有太多运气,但如果有人能提供我需要的一个好的c#示例。
我愿意再次尝试。我读错了价值吗?任何帮助将不胜感激。相关代码发布在下面。
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
}
答案 0 :(得分:1)
正如@Jason所说,您可以尝试使用JSON.NET
包。
我正在尝试这个,但是在下一个活动中该对象将显示为null。
不要扩展Java.Lang.Object
,修改您的Part
类,如下所示:
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; }
}
那应该是可行的。