方法取决于什么是电影列表...
- 如果您的电影列表是一个简单的字符串数组列表,则使用
putStringArrayListExtra 和 getStringArrayListExtra。
- 如果它们是对象(单独的类),那么您应该实现
可打包并使用
putParcelableArrayListExtra 和
getParcelableArrayList。
如果 MovieName 是一个对象/类,则实现 Parcelable
import android.os.Parcel;
import android.os.Parcelable;
public class MovieName implements Parcelable {
private String name;
private String year;
public MovieName(String name, String year) {
this.name = name;
this.year = year;
}
public MovieName(Parcel in) {
name = in.readString();
year = in.readString();
}
// Creator
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MovieName createFromParcel(Parcel in) {
return new MovieName(in);
}
public MovieName[] newArray(int size) {
return new MovieName[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(name);
parcel.writeString(year);
}
@Override
public String toString() {
return "MovieName=[name=" + name + ";year=" + year + "]";
}
}
在MainActivity里面当你要到startActivity去DetailActivity
Intent intent = new Intent(view.getContext(), DetailActivity.class);
ArrayList<String> movieNames = new ArrayList<String>();
movieNames.add("Star Wars");
movieNames.add("Transporter");
movieNames.add("Need for Speed");
intent.putStringArrayListExtra("MOVIE_NAMES", movieNames);
Log.d("Movie Names", "Writing into intent ... " + movieNames.toString());
ArrayList<MovieName> movieNameList = new ArrayList<MovieName>();
movieNameList.add(new MovieName("Star Wars", "1900"));
movieNameList.add(new MovieName("Transporter", "2000"));
intent.putParcelableArrayListExtra("movie", movieNameList);
Log.d("MovieName Parcelable", "Writing into intent ... " + movieNameList.toString());
startActivity(intent);
内部DetailActivity's onCreate
ArrayList<String> movieNames = getIntent().getStringArrayListExtra("MOVIE_NAMES");
Log.d("Movie Names", "Reading from intent ... " + movieNames.toString());
ArrayList<MovieName> movieNameList = getIntent().getExtras().getParcelableArrayList("movie");
Log.d("MovieName Parcelable", "Reading from intent ... " + movieNameList.toString());
样品运行
07-25 16:32:53.108 5264-5264/? D/Movie Names: Writing into intent ... [Star Wars, Transporter, Need for Speed]
07-25 16:32:53.111 5264-5264/? D/MovieName Parcelable: Writing into intent ... [MovieName=[name=Star Wars;year=1900], MovieName=[name=Transporter;year=2000]]
07-25 16:32:53.144 5264-5264/? D/Movie Names: Reading from intent ... [Star Wars, Transporter, Need for Speed]
07-25 16:32:53.145 5264-5264/? D/MovieName Parcelable: Reading from intent ... [MovieName=[name=Star Wars;year=1900], MovieName=[name=Transporter;year=2000]]