zoukankan      html  css  js  c++  java
  • Android中包含List成员变量的Parcel以及Parcel嵌套写法示例

    这个Scean类实现了Parcelable接口,同时其内部的成员变量List<SubScean> subSceanList 中的SubScean类也实现了Parcelable接口。

    public class Scean implements Parcelable {
        public String name;
        public String voiceName;
        public String picName;
        public String introduction;
        public String folderName;
        
        public Double rightTopLon;
        public Double rightTopLat;
        public Double leftBottomLon;
        public Double leftBottomLat;
        
        public int picPosition;
        public int picLength;
        public int introPosition;
        public int introLength;
        
        public String cityName;
        public int totalLength;
    
        private List<SubScean> subSceanList = new ArrayList<SubScean>();
    
        public Scean() {
            // do nothing;
        }
    
        private Scean(Parcel in) {
            name = in.readString();
            voiceName = in.readString();
            picName = in.readString();
            introduction = in.readString();
            folderName = in.readString();
    
            rightTopLon = in.readDouble();
            rightTopLat = in.readDouble();
            leftBottomLon = in.readDouble();
            leftBottomLat = in.readDouble();
            
            picPosition = in.readInt();
            picLength = in.readInt();
            introPosition = in.readInt();
            introLength = in.readInt();
            cityName = in.readString();
            totalLength = in.readInt();
            
            in.readTypedList(subSceanList, SubScean.CREATOR);// return void, it pass
                                                                // List to the first
                                                                // arg
        }
    
        public void addSubScean(SubScean subScean) {
            subSceanList.add(subScean);
        }
    
        public SubScean getSubScean(int position) {
            return subSceanList.get(position);
        }
    
        public int getLength() {
            return subSceanList.size();
        }
    
        @Override
        public int describeContents() {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(this.name);
            dest.writeString(this.voiceName);
            dest.writeString(this.picName);
            dest.writeString(this.introduction);
            dest.writeString(this.folderName);
    
            dest.writeDouble(this.rightTopLon);
            dest.writeDouble(this.rightTopLat);
            dest.writeDouble(this.leftBottomLon);
            dest.writeDouble(this.leftBottomLat);
            
            dest.writeInt(picPosition);
            dest.writeInt(picLength);
            dest.writeInt(introPosition);
            dest.writeInt(introLength);
            dest.writeString(cityName);
            dest.writeInt(totalLength);
            
            dest.writeTypedList(subSceanList);
        }
    
        public static final Parcelable.Creator<Scean> CREATOR = new Creator<Scean>() {
    
            @Override
            public Scean[] newArray(int size) {
                return new Scean[size];
            }
    
            @Override
            public Scean createFromParcel(Parcel source) {
                return new Scean(source);
            }
        };
    }

    下面是SubScean的代码

    public class SubScean implements Parcelable {
        public String subScenName;
        public String voiceName;
        public String picName;
        public String folderName;
        public String voiceSuffix;
        public Double longitude;
        public Double latitude;
        
        public int picPosition;
        public int picLength;
        
        public String cityName;
        public String scenicName;
        
        public int introPosition;
        public int introLength;
    
        public SubScean() {
        }
    
        private SubScean(Parcel in) {
            this.subScenName = in.readString();
            this.voiceName = in.readString();
            this.picName = in.readString();
            this.folderName = in.readString();
            
            this.longitude = in.readDouble();
            this.latitude = in.readDouble();
            
            picPosition = in.readInt();
            picLength = in.readInt();
            
            cityName = in.readString();
            scenicName = in.readString();
            
            introPosition = in.readInt();
            introLength = in.readInt();
        }
    
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(subScenName);
            dest.writeString(voiceName);
            dest.writeString(picName);
            dest.writeString(folderName);
            dest.writeDouble(longitude);
            dest.writeDouble(latitude);
            
            dest.writeInt(picPosition);
            dest.writeInt(picLength);
            
            dest.writeString(cityName);
            dest.writeString(scenicName);
            
            dest.writeInt(introPosition);
            dest.writeInt(introLength);
        }
    
        public static final Parcelable.Creator<SubScean> CREATOR = new Creator<SubScean>() {
    
            @Override
            public SubScean createFromParcel(Parcel source) {
                return new SubScean(source);
            }
    
            @Override
            public SubScean[] newArray(int size) {
                return new SubScean[size];
            }
    
        };
    }
  • 相关阅读:
    你真的了解try{ return }finally{}中的return?
    js删除一个div
    js清空 input file上传文件控件
    获取配置文件数据库名称
    【转】一文搞定web自动化环境常见问题
    【转】使用SHC加密bash脚本程序以及解密
    【转】Python远程调试图文教程 之 Pycharm Remote Debug
    【转】Windows下安装MySQL详细教程
    将安装CentOS虚机的iso设置为yum源
    【算法】java语言求不定长字符串的最长子串和长度
  • 原文地址:https://www.cnblogs.com/BlogCommunicator/p/7490481.html
Copyright © 2011-2022 走看看