2017-12-21 1 views
0

Parcelable을 사용하여 내 수업에있는 목록을 전달하는 데 문제가 있습니다. 내 문자열 (partNbr 및 partdescription)에 대한 값은 ok를 통과하지만 쓰기 및 읽기 사이의 목록을 잃어 버리고 있습니다.목록 화 가능 목록 <string>, 목록 <int>

나는 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 
} 
+1

JSON.NET 패키지를 살펴 보는 것이 좋습니다. 그것은 매우 사용하기 쉽고 잘 문서화되어 있습니다. – Jason

+0

저는 이것을 시도하고 있습니다 만, 다음 활동에서 객체가 null로 나오고 있습니다. 다음은 객체를 직렬화하는 코드입니다. int.PutExtra ("PART", JsonConvert.SerializeObject (myPart)); 내가 deserialize하는 곳 : Part inPart = JsonConvert.DeserializeObject (Intent.GetStringExtra ("PART"))); – bashby82

답변

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; } 
} 

는 그 다음 일해야한다.

+0

만약 내가이 100v upvote 수 있습니다. 너희들 많이 고마워! 나는 이것을 인정하기보다 오랫동안 속일 수 있었다. – bashby82