实现Parcelable的bean中有数组对象

来源:互联网 发布:js查找字符串出现次数 编辑:程序博客网 时间:2024/06/05 19:29
package com.whu.travel_whu.bean;import android.os.Parcel;import android.os.Parcelable;/** * Created by Fly on 2016/8/2. */public class ScenicSpot implements Parcelable{    private String name;    private String address;    private float point;    private String[] imageUrls;    public ScenicSpot(){    }    public ScenicSpot(String name, String address, float point, String[] imageUrls){        this.name = name;        this.address = address;        this.point = point;        this.imageUrls = imageUrls;    }    protected ScenicSpot(Parcel in) {        name = in.readString();        address = in.readString();        point = in.readFloat();        int size = in.readInt();        if(size > 0) {            imageUrls = new String[size];            in.readStringArray(imageUrls);        }    }    public static final Creator<ScenicSpot> CREATOR = new Creator<ScenicSpot>() {        @Override        public ScenicSpot createFromParcel(Parcel in) {            return new ScenicSpot(in);        }        @Override        public ScenicSpot[] newArray(int size) {            return new ScenicSpot[size];        }    };    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(name);        dest.writeString(address);        dest.writeFloat(point);        if(imageUrls == null){            dest.writeInt(0);        }else {            dest.writeInt(imageUrls.length);        }        if(null != imageUrls){            dest.writeStringArray(imageUrls);        }    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String[] getImageUrls() {        return imageUrls;    }    public void setImageUrls(String[] imageUrls) {        this.imageUrls = imageUrls;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public float getPoint() {        return point;    }    public void setPoint(float point) {        this.point = point;    }}
  • writeToParcel(Parcel dest, int flags)中写入的顺序要与ScenicSpot(Parcel in)读取的顺序一致。
  • 在写入数组时,要先new一个对象,不然会报空指针错误。
0 0