[英]How to read/write nested ArrayLists when using Parcelable in Android?
[英]Android Parcelable: How to read / write string array lists and integer arrays
我在嘗試將字符串數組列表和整數數組寫入parcel時遇到問題。
這是我的班級領域
String uniqueDate;
ArrayList <String> set1Numbers;
ArrayList <String> set2Numbers;
ArrayList <String> UIDs;
int[] selectedStatus;
此部分將數據寫入parcel
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(uniqueDate);
dest.writeStringList(set1Numbers);
dest.writeStringList(set2Numbers);
dest.writeStringList(UIDs);
dest.writeIntArray(selectedStatus);
}
這部分讀了它。 我認為問題出在這里
PNItems(Parcel in)
{
this.uniqueDate = in.readString();
in.readStringList(set1Numbers);
in.readStringList(set2Numbers);
in.readStringList(UIDs);
in.readIntArray(selectedStatus);
}
有人可以告訴我該怎么做,我找不到我的問題在互聯網上的教程。 謝謝你的閱讀
如果查看Parcel 的文檔 ,readStringList()顯示:
讀入給定的List items在當前dataPosition()中使用writeStringList(List)編寫的String對象。
返回一個新創建的ArrayList,其中包含與先前寫入的數據相同的數據字符串。
它要求您傳入的List <>非null(因為它將填充它)。 由於這是你的構造函數,我希望你的參數為null,這就是你崩潰的原因。 您應該使用Parcel#createStringArrayList()
來返回一個新的List:
從當前dataPosition()使用writeStringList(List)編寫的parcel中讀取並返回一個包含String對象的新ArrayList。 如果先前寫入的列表對象為null,則返回null。
返回一個新創建的ArrayList,其中包含與先前寫入的數據相同的數據字符串。
例如:
set1Numbers = in.createStringArrayList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.