嗨,大家好我試圖包裹嵌套的對象,但它給人的RuntimeException:包裹:不能編組值....嵌套對象包裹不工作
請幫我解決這個問題...
包裹和POJO結構: -
只是在展示POJO變量..
1)RateRule: -
public class RateRule{
private List<Rule> rules = new ArrayList<Rule>();
}
2)規則: -
public class Rule {
private String ruleID;
private String splOfferId;
private String ruleName;
private String ruleDescription;
private String ruleType;
private List<Room> rooms = new ArrayList<Room>();
}
3)房間: -
public class Room {
private int id;
private String name;
private String propertyName;
private String roomThumbnailUrl;
private String hotelInfo;
private float price;
private float discountPrice;
private String roomTypeId;
private String maxOccupancy;
private List<String> amenities = new ArrayList<String>();
private List<String> facilities = new ArrayList<String>();
private List<Gallery> gallery = new ArrayList<Gallery>();
private List<String> tvChannels = new ArrayList<String>();
private List<String> attractions = new ArrayList<String>();
}
----------- Parcelable類來讀取或寫入: -
public class RateRuleParcel implements Parcelable {
private RateRule rateRule;
public RateRule getRateRule() {
return rateRule;
}
public RateRuleParcel(RateRule rateRule) {
super();
this.rateRule = rateRule;
}
public RateRuleParcel(Parcel in) {
rateRule=new RateRule();
ArrayList<Rule> readArrayList = (ArrayList<Rule>)in.readArrayList(Object.class.getClassLoader());
rateRule.setRules(readArrayList);
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeList((ArrayList<Rule>)rateRule.getRules());
}
public static final Parcelable.Creator<RateRuleParcel> CREATOR = new Parcelable.Creator<RateRuleParcel>() {
@Override
public RateRuleParcel createFromParcel(Parcel in) {
return new RateRuleParcel(in);
}
@Override
public RateRuleParcel[] newArray(int size) {
return new RateRuleParcel[size];
}
};
}
而我試圖在包裹中設置值的類: -
List<Room> roomItem; List<Rule> ruleItem; List<Rule> rateRuleItem; RateRule rateRule = new RateRule();
Rule rule= new Rule();
Room room= new Room();
ruleItem=new ArrayList<Rule>();
roomItem=new ArrayList<Room>();
rateRuleItem=new ArrayList<Rule>();
rule.setRuleID(rateRuleIdArray.get(groupPosition));
rule.setSplOfferId(splOfferId);
rule.setRuleName("TESTING");
rule.setRuleDescription("TESTING");
rule.setRuleType(rateRuleTypeArray.get(groupPosition));
room.setId(Integer.parseInt(setId.get(childPosition)));
room.setName(setName.get(childPosition).toString());
room.setPropertyName(propertyName);
room.setRoomThumbnailUrl("TESTING");
room.setHotelInfo(setHotelInfo.get(childPosition).toString());
room.setPrice(Float.parseFloat(setPrice.get(childPosition).toString()));
room.setDiscountPrice(Float.parseFloat(setDiscountPrice.get(childPosition).toString()));
// ruleItem.add(rule);
roomItem.add(room);
rule.setRooms(roomItem);
rateRuleItem.add(rule);
rateRule.setRules(rateRuleItem);