【发布时间】:2018-07-31 14:21:27
【问题描述】:
我知道这是一个常见问题,并且我在网上查看了解决方案,但我在自己实施时遇到了困难。
我有一个包含三个变量的类:Location、Date 和 Uri。
我有一个Arraylist,它由多个包含所述类的数组列表组成。
例如:
ArrayList<ArrayList<class>>
我正在尝试将此传递给另一个活动,但未成功。
我尝试了Parcelable 和Serializable,但都没有成功。
编辑:添加源代码。
类文档:
public class imageHolder implements Parcelable
{
private Uri uri;
private Date date;
private Location loc;
public imageHolder(Uri uriAdd, Date dateAdded,Location imgLoc)
{
this.uri = uriAdd;
this.date = dateAdded;
this.loc = imgLoc;
}
public static final Creator<imageHolder> CREATOR = new Creator<imageHolder>() {
@Override
public imageHolder createFromParcel(Parcel in) {
return new imageHolder(in);
}
@Override
public imageHolder[] newArray(int size) {
return new imageHolder[size];
}
};
public Uri getURI() { return this.uri; }
public Date getDate() {return this.date; }
public Location getLocation() {return this.loc; };
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeSerializable(date);
parcel.writeParcelable(uri,i);
parcel.writeParcelable(loc, i);
}
protected imageHolder(Parcel in) {
date = (java.util.Date) in.readSerializable();
uri = in.readParcelable(Uri.class.getClassLoader());
loc = in.readParcelable(Location.class.getClassLoader());
}
}
第一个活动:
ArrayList<ArrayList<imageHolder>> sepImages = new ArrayList<ArrayList<imageHolder>>();
sepImages = groupPics(images);
Intent nextActivity = new Intent(loadImages.this, storiesScreen.class);
nextActivity.putExtra("images",images);
startActivity(nextActivity);
finishActivity(0);
第二次活动:
ArrayList<ArrayList<imageHolder>> sepImages =
(ArrayList<ArrayList<imageHolder>>) getIntent().getParcelableExtra("images");
Log.d("stories","test");
【问题讨论】:
-
你能发布源代码吗?顺便说一句,如果它有很多数据,最好使用存储库类型结构。传递大量数据并不是序列化/可打包的真正用途,实际上您可能会遇到问题,因为可打包数据有上限。
-
@breakline 嘿,感谢您的回复。我现在已经添加了源代码。在这些活动之间传递的数据量应该很大。我将很快研究存储库类型结构,尽管我从未听说过。
-
不是一个答案,只是一些 Java 风格的编码技巧:用大写字母开始你的类。变量以小写字母开头并使用驼峰式风格是正确的。示例:
ImageHolder用于类imageHolder用于变量。 -
您是否打算传递“图像”而不是“sepImages”?
标签: java android arraylist android-activity