Android 如何将对象数组传递给活动?

Android 如何将对象数组传递给活动?,android,android-activity,bundle,Android,Android Activity,Bundle,我读过关于在活动之间传递数组的帖子,但我不知道如何在我的具体案例中这样做 我有一个名为dayseather(dayseather[]数组)的对象数组,其中的对象有几个字符串属性和一个位图属性。我在某个地方读到,你必须使它可序列化或可打包或其他什么的,但乍一看似乎很混乱 有人能把我引向正确的方向吗 有没有一种简单的方法可以做到这一点?您的对象需要实现 完成此操作后,您可以创建包裹阵列并将其传递给活动: // We assume we have an array: DaysWeather[] inp

我读过关于在活动之间传递数组的帖子,但我不知道如何在我的具体案例中这样做

我有一个名为dayseather(dayseather[]数组)的对象数组,其中的对象有几个字符串属性和一个位图属性。我在某个地方读到,你必须使它可序列化或可打包或其他什么的,但乍一看似乎很混乱

有人能把我引向正确的方向吗


有没有一种简单的方法可以做到这一点?

您的对象需要实现

完成此操作后,您可以创建包裹阵列并将其传递给活动:

// We assume we have an array: DaysWeather[] input;
Parcelable[] output = new Parcelable[input.length];
for (int i=input.length-1; i>=0; --i) {
    output[i] = input[i];
}

Intent i = new Intent(...);
i.putExtra("myArray", output);

还要注意,在实现Parcelable接口时,不要序列化全重对象。例如,对于位图,仅序列化ressource ID,膨胀时,从ressource ID重新创建位图。

但不要这样做。使用其他方法传输对象,如服务。在活动之间传递对象的另一种方法是使用内容提供者、广播接收器和意图过滤器。()我不知道你说“不要序列化全重对象”是什么意思。我的位图没有资源ID,因为它们直接从web下载到各自的容器对象中。另外,你能告诉我一个合适的实施Parcelable的教程/示例吗?我的对象(DaysWeather)只是包含5个字符串和一个位图的数据结构。我不确定如何使用此数据实现writeToParcel()方法。对于字符串,只需使用parcel.writeString和parcel.readString方法即可。关于位图,我的意思是不序列化(写入)图像(图像字节),而是序列化SD卡上的图像URL或缓存文件位置。当您将反序列化(读取)对象时,您将获得图像的URL或路径,并相应地重新创建位图。这样,您就不会序列化千字节的数据,而是序列化几个字节。关于教程,只需谷歌搜索并阅读第一个结果页面上的内容。包裹类页面上的解释也很好。