如何实现parcelable的名单,LT;龙&GT; [英] How to implement parcelable for List<Long>
本文介绍了如何实现parcelable的名单,LT;龙&GT;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想通过一个列表,我的parcelable这样做的:
公共类MetaDados实现Parcelable {私人列表&LT;龙&GT; sizeImages;公共MetaDados(列表&LT;龙&GT; sizeImages){
this.sizeImages = sizeImages;
}公开名单&LT;龙&GT; getSizeImages(){
返回sizeImages;
} 公共无效setSizeImages(列表&LT;龙&GT; sizeImages){
this.sizeImages = sizeImages;
}@覆盖
公众诠释describeContents(){
// TODO自动生成方法存根
返回0;
}@覆盖
公共无效writeToParcel(DEST包裹,INT标志){
dest.writeList(sizeImages);
} 公共静态最终Parcelable.Creator&LT; MetaDados&GT; CREATOR =新Parcelable.Creator&LT; MetaDados&GT;(){
@覆盖
公共MetaDados createFromParcel(包裹中){
返回新MetaDados(中);
} @覆盖
公共MetaDados [] newArray(INT大小){
返回新MetaDados【尺寸】;
}
};私人MetaDados(包裹中){
//这里的问题是,我已经试过这样:sizeImages = in.readList(sizeImages,Long.class.getClassLoader());//但我得到了什么:类型不匹配:无法从虚空转换到列表&LT;龙&GT;
}
}
解决方案
试试这个:
sizeImages =新的ArrayList&LT;龙&GT;(); //或任何其他类型的列表
in.readList(sizeImages,NULL);
的<一个href=\"http://developer.android.com/reference/android/os/Parcel.html#readList%28java.util.List,%20java.lang.ClassLoader%29\"相对=nofollow>为 Parcel.readList
Android文档说:
读入现有列表对象从包裹
块引用>,因此,您需要首先创建
列表
。I'm trying to pass a List in my parcelable doing:
public class MetaDados implements Parcelable { private List<Long> sizeImages; public MetaDados(List<Long> sizeImages){ this.sizeImages = sizeImages; } public List<Long> getSizeImages() { return sizeImages; } public void setSizeImages(List<Long> sizeImages) { this.sizeImages = sizeImages; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeList(sizeImages); } public static final Parcelable.Creator<MetaDados> CREATOR = new Parcelable.Creator<MetaDados>() { @Override public MetaDados createFromParcel(Parcel in) { return new MetaDados(in); } @Override public MetaDados[] newArray(int size) { return new MetaDados[size]; } }; private MetaDados(Parcel in) { //HERE IS THE PROBLEM, I'VE tried this: sizeImages = in.readList(sizeImages, Long.class.getClassLoader()); //but what i got: Type mismatch: cannot convert from void to List<Long> } }
解决方案Try this instead:
sizeImages = new ArrayList<Long>(); // or any other type of List in.readList(sizeImages, null);
The Android documentation for
Parcel.readList
says:Read into an existing List object from the parcel
and thus, you need to first create the
List
.这篇关于如何实现parcelable的名单,LT;龙&GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文