如何实现parcelable的名单,LT;龙> [英] How to implement parcelable for List<Long>

查看:149
本文介绍了如何实现parcelable的名单,LT;龙>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过一个列表,我的parcelable这样做的:

 公共类MetaDados实现Parcelable {私人列表<龙> sizeImages;公共MetaDados(列表<龙> sizeImages){
this.sizeImages = sizeImages;
}公开名单<龙> getSizeImages(){
        返回sizeImages;
    }    公共无效setSizeImages(列表<龙> sizeImages){
        this.sizeImages = sizeImages;
    }@覆盖
    公众诠释describeContents(){
        // TODO自动生成方法存根
        返回0;
    }@覆盖
    公共无效writeToParcel(DEST包裹,INT标志){
dest.writeList(sizeImages);
}    公共静态最终Parcelable.Creator< MetaDados> CREATOR =新Parcelable.Creator< MetaDados>(){
        @覆盖
        公共MetaDados createFromParcel(包裹中){
            返回新MetaDados(中);
        }        @覆盖
        公共MetaDados [] newArray(INT大小){
            返回新MetaDados【尺寸】;
        }
    };私人MetaDados(包裹中){
//这里的问题是,我已经试过这样:sizeImages = in.readList(sizeImages,Long.class.getClassLoader());//但我得到了什么:类型不匹配:无法从虚空转换到列表<龙>
}
}


解决方案

试试这个:

  sizeImages =新的ArrayList<龙>(); //或任何其他类型的列表
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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆