您的位置:首页 > 其它

实现Parcelable的bean中有数组对象

2016-08-03 14:03 253 查看
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一个对象,不然会报空指针错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: