Android: 我可以传递一组 Parcelable 对象吗?我需要创建一个包装器对象吗?
Android: Can I pass an array of Parcelable objects? Do I need to create a wrapper object?
我创建了一个名为 Task 的 Parcelable 对象,如下所示
public final class Task implements Parcelable {
// Lots of code, including parceling a single task
}
我已经为单个任务编写了所有 Parcelable 代码。但现在我正在开发一个需要一系列任务的新 activity。一方面,我可以创建一个 TaskList
public class TaskList implements Parcelable {
List<Task> taskList;
// other stuff
}
但这意味着我必须创建一个新对象并重写大量 Parcelable 逻辑(即使它们几乎相同)。相反,如果我能以某种方式传递一组任务,那就太好了。但是我看到的功能只有这个。
public static final Parcelable.Creator<Task> CREATOR = new Parcelable.Creator<Task>() {
public Task createFromParcel(Parcel in) {
return new Task(in);
}
// This one......
public Task[] newArray(int size) {
return new Task[size];
}
// This one......
};
而且我不太确定 Parceable 将如何使用此函数来处理一组任务。如何传递任务数组而不是创建任务列表?
首先有一个插件可以为您的对象生成 parcelable 代码,它会节省您的时间,其次您需要做的就是通过以下方式将其添加到 intent 中:
intent.putParcelableArrayListExtra(TASK_LIST,taskList);
您可以找到此屏幕截图中说明的插件
假设,您想要将列表从 Activity A 传递到 B。
在 Activity 中:
intent.putParcelableArrayList("task_list", actualListObject);
在Activity B 中获取数据:
ArrayList<Task> receivedList = (Task) getIntent().getParcelableArrayList("task_list");
像这样将数组列表写入 Parcelable
:
public class Task implements Parcelable {
List<Task> taskList;
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeValue(taskList);
...
}
@SuppressWarnings("unchecked")
private Task(Parcel in) {
taskList = (List<Task>) in.readValue(List.class.getClassLoader());
...
}
}
100% 适合我。
我创建了一个名为 Task 的 Parcelable 对象,如下所示
public final class Task implements Parcelable {
// Lots of code, including parceling a single task
}
我已经为单个任务编写了所有 Parcelable 代码。但现在我正在开发一个需要一系列任务的新 activity。一方面,我可以创建一个 TaskList
public class TaskList implements Parcelable {
List<Task> taskList;
// other stuff
}
但这意味着我必须创建一个新对象并重写大量 Parcelable 逻辑(即使它们几乎相同)。相反,如果我能以某种方式传递一组任务,那就太好了。但是我看到的功能只有这个。
public static final Parcelable.Creator<Task> CREATOR = new Parcelable.Creator<Task>() {
public Task createFromParcel(Parcel in) {
return new Task(in);
}
// This one......
public Task[] newArray(int size) {
return new Task[size];
}
// This one......
};
而且我不太确定 Parceable 将如何使用此函数来处理一组任务。如何传递任务数组而不是创建任务列表?
首先有一个插件可以为您的对象生成 parcelable 代码,它会节省您的时间,其次您需要做的就是通过以下方式将其添加到 intent 中:
intent.putParcelableArrayListExtra(TASK_LIST,taskList);
您可以找到此屏幕截图中说明的插件
假设,您想要将列表从 Activity A 传递到 B。
在 Activity 中:
intent.putParcelableArrayList("task_list", actualListObject);
在Activity B 中获取数据:
ArrayList<Task> receivedList = (Task) getIntent().getParcelableArrayList("task_list");
像这样将数组列表写入 Parcelable
:
public class Task implements Parcelable {
List<Task> taskList;
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeValue(taskList);
...
}
@SuppressWarnings("unchecked")
private Task(Parcel in) {
taskList = (List<Task>) in.readValue(List.class.getClassLoader());
...
}
}
100% 适合我。