传递数组列表<ImageItems>从一个活动到另一个活动.图像项包含位图和字符串

Pass a arraylist<ImageItems> from one activity to another.Image Item contains BITMAP and STRING

本文关键字:活动 另一个 字符串 一个 图像 包含 位图 lt 列表 数组 ImageItems      更新时间:2023-09-26

将数组列表从一个活动传递到另一个活动。图像项包含位图和字符串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");

希望这能有所帮助。当做

相关文章: