Intent中传递集合的问题与思考

刚刚接触android不久所以对intent中传递数据不是很来了解特此记录下来以备忘
同时也希望一次来帮助新手(至少我经历过应该可以说是老手了吧,呵呵。。。往脸上贴金了!)

另外我还对intent中传递参数还有一点小问题希望有人能为我解释一下疑惑

入正题:
需求:在多个activity之间传递对象集合

解决方案:
第一:我们可以定义一个继承application的这样的一个类这样我们就可以在整个应用中使用了 此方案可行!
第二:我们可以通过intent 来传递。

关于intent的知识回顾:

对intent 中传递参数的问题并不麻烦,我们知道intent中可以传递基本数据类的数据,可以传递String 可以传递 对象(但是对象必须实现序列化),另外intent也可以传递集合
但是对于集合有限制只能传递ArrayList,而且还必须是包装了泛型是Integer 或者String 这样形式的,但是根据我的需求intent 貌似满足不了,但是intent 中可以传递bundle在bundle 中我们可以看到能够传递一个实现了parcelable接口的对象集合
具体代码如下:
实体:

public class OBean implements Serializable,Parcelable {
private static final long serialVersionUID = 1L;

private String messageName;

private String xmlPath;

public OBean(){}

private OBean(Parcel parcel){
messageName = parcel.readString();
xmlPath = parcel.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(messageName);
dest.writeString(xmlPath);
}
public static final Parcelable.Creator<OBean> CREATOR = new Parcelable.Creator<OBean>() {

@Override
public OBean createFromParcel(Parcel source) {
return new OBean(source);
}

@Override
public OBean[] newArray(int size) {
return new OBean[size];
}
};

public String getMessageName() {
return messageName;
}

public void setMessageName(String messageName) {
this.messageName = messageName;
}

public String getXmlPath() {
return xmlPath;
}

public void setXmlPath(String xmlPath) {
this.xmlPath = xmlPath;
}

public static long getSerialversionuid() {
return serialVersionUID;
}

@Override
public int describeContents() {
return 0;
}

}

我们实现了parcelable接口 实现了序列化;可以看到Parcelable 帮我们为OBean赋值了

但是这个过程中我有一点不明白如下:

private OBean(Parcel parcel){
messageName = parcel.readString();
xmlPath = parcel.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(messageName);
dest.writeString(xmlPath);
}


这个过程的readString 和writeString 有没有顺序的限制?
我看了相关文档结果没有发现能够帮我理解此问题的有利根据,所以希望哪位大神能指点一下

如上所述完成了 这一个过程就基本上完成了传递对象集合的80%了

剩下的20%:

ArrayList<OBean> list = OMessageParser.getOMessageBean(context,"OMessage.xml");
Intent OMIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("OBeanList", list);

这样的话我们在
putParcelableArrayList 的时候只需要把 包装好的ArrayList<OBean> 写进去就好了

但是到这个地方我还是有疑问了。。为什么intent 只能传递ArrayList不能传递List或者其他的数据结构呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值