• 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];
            }
    
        };
    }
  • 相关阅读:
    ios10兼容问题
    safari图片跨域
    出现Unable to locate appropriate constructor on class 错误可能的原因
    localStorage、sessionStorage用法以及区别
    多行文本垂直居中,多行文本溢出
    【汉字】转【pīnyīn】
    移除行块级元素之间的空格(译文)
    jquery插件——检测DOM元素是否在浏览器可视范围之内
    监控阮一峰老师的blog
    PHP实现linux命令tail -f
  • 原文地址:https://www.cnblogs.com/BlogCommunicator/p/7490481.html
Copyright © 2020-2023  润新知