将数组列表从一个活动传递到另一个活动。图像项包含位图和字符串ImageItem包含BITMAP和STRING传递的数组列表包含多个ImageItems
退房http://developer.android.com/reference/android/os/Parcelable.html
ImageItems类应该实现parcelable,以便在活动之间传递它。
public class ImageItems implements Parcelable {
private String mYourString;
// Your BITMAP implementation.
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
// Break down your object here for storage into the parcel.
out.writeString(mYourString);
// Write your BITMAP to the parcel.
}
public static final Parcelable.Creator<ImageItems> CREATOR
= new Parcelable.Creator<ImageItems>() {
public ImageItems createFromParcel(Parcel in) {
return new ImageItems(in);
}
public ImageItems[] newArray(int size) {
return new ImageItems[size];
}
};
private ImageItems(Parcel in) {
// Rebuild your object from the parcel here.
mYourString = in.readString();
// Read your BITMAP from the parcel.
}
}
现在,您应该能够将可分割ImageItems的数组列表添加到您的intent bundle中。
intent.putParcelableArrayListExtra("Data", mArraylist);
希望这能有所帮助。
总的来说,这是个坏主意。你的活动应该尽可能地相互独立,以便能够灵活使用。
如果您绝对坚持,只需在活动类中使用公共静态变量,将它们设置为您的数据并访问其他活动。
通常,数据可以在第一个活动中使用putBundle()和在第二个"活动"中使用getBundle.()在活动之间传递。
但在这种自定义对象的情况下,应该使用实现Parcelable或Serializable的bundle。
序列化方式更容易实现。请参见下文。
使用以下代码从第一个活动传递arraylist。
List<ImageItem> imageItems = new ArrayList<ImageItem>();
imageItems.add(new ImageItem(//your parameters //));
imageItems.add(new ImageItem(//your parameters //));
imageItems.add(new ImageItem(//your parameters //));
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
bundle.putSerializable("data", (Serializable) imageItems);
startActivity(mIntent);
使用以下代码从第二个活动中获取arraylist。
Bundle bundle = getIntent().getExtras();
List<ImageItem> imageItems = new ArrayList<>(ImageItem);
imageItems = (List<ImageItem>) bundle.getSerializable("data");
希望这能有所帮助。当做