【发布时间】:2013-02-28 10:28:31
【问题描述】:
我搜索了一些主题,但没有找到解决问题的方法。
public class Series implements Parcelable {
private String name;
private int numOfSeason;
private int numOfEpisode;
/** Constructors and Getters/Setters have been removed to make reading easier **/
public Series(Parcel in) {
String[] data = new String[3];
in.readStringArray(data);
this.name = data[0];
this.numOfSeason = Integer.parseInt(data[1]);
this.numOfEpisode = Integer.parseInt(data[2]);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[] { this.name,
String.valueOf(this.numOfSeason),
String.valueOf(this.numOfEpisode) });
}
private void readFromParcel(Parcel in) {
name = in.readString();
numOfSeason = in.readInt();
numOfEpisode = in.readInt();
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
@Override
public Series createFromParcel(Parcel in) {
return new Series(in);
}
@Override
public Series[] newArray(int size) {
return new Series[size];
}
};
}
在我的 MainActivity 中,我有一个 ArrayList。为了使列表动态可编辑,我需要将它传递给另一个我可以编辑它的活动。
ArrayList<Series> listOfSeries = new ArrayList<Series>();
public void openAddActivity() {
Intent intent = new Intent(this, AddActivity.class);
intent.putParcelableArrayListExtra(
"com.example.episodetracker.listofseries",
(ArrayList<? extends Parcelable>) listOfSeries);
startActivity(intent);
}
我需要转换列表,否则 Eclipse 会给我以下错误消息。 Intent类型中的putParcelableArrayListExtra(String, ArrayList)方法不适用于参数(String, List)
这是正确的做法吗?
ArrayList<Series> list = savedInstanceState
.getParcelableArrayList("com.example.episodetracker.listofseries");
这是我尝试在另一个活动中读取数据的方式。
它在上面一行崩溃了。即 getParcelableArrayList 部分。
【问题讨论】:
-
1/ 我不明白在您的代码中什么不起作用。 2/你不把列表保存在某个地方吗?因此,最好在数据库上工作而不是在你从一个活动传递到另一个活动的数组上工作吗?
-
Parcelables 可以说是魔鬼......你试过让它序列化吗?
-
我的印象是 Parcelable 是要走的路,因为 Serializable 要慢很多?
-
Parcelable 让复杂类变得更容易。就速度而言,我们在谈论多少数据条目?
-
一个包含约 10 个条目的 ArrayList,其中每个条目有 3 个内存变量。
标签: android arraylist parcelable