如何将 List<Model> 从 Activity 传递到 Fragment
How can I pass List<Model> from Activity to Fragment
我想将 List 从 Activity 传递给 Fragment。但我不知道模型 class 必须实现 'Parcelable' 或 'Serializable'。还有如何定义实现方法。感谢您看到这个问题。代码下面是我的模型 class.
public class Artist {
private String artistName;
private String aritstImgPath;
private List<Album> albumList;
public Artist() {
}
public Artist(String artistName, String aritstImgPath, List<Album> albumList) {
this.artistName = artistName;
this.aritstImgPath = aritstImgPath;
this.albumList = albumList;
}
public String getArtistName() {
return artistName;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public String getAritstImgPath() {
return aritstImgPath;
}
public void setAritstImgPath(String aritstImgPath) {
this.aritstImgPath = aritstImgPath;
}
public List<Album> getAlbumList() {
return albumList;
}
public void setAlbumList(List<Album> albumList) {
this.albumList = albumList;
}
@Override
public String toString() {
return "Artist{" +
"artistName='" + artistName + '\'' +
", aritstImgPath='" + aritstImgPath + '\'' +
", albumList=" + albumList +
'}';
}
}
public class Album {
private String albumTitle;
private String albumImgPath;
private List<Song> songList;
public Album() {
}
public Album(String albumTitle, String albumImgPath, List<Song> songList) {
this.albumTitle = albumTitle;
this.albumImgPath = albumImgPath;
this.songList = songList;
}
public String getAlbumTitle() {
return albumTitle;
}
public void setAlbumTitle(String albumTitle) {
this.albumTitle = albumTitle;
}
public String getAlbumImgPath() {
return albumImgPath;
}
public void setAlbumImgPath(String albumImgPath) {
this.albumImgPath = albumImgPath;
}
public List<Song> getSongList() {
return songList;
}
public void setSongList(List<Song> songList) {
this.songList = songList;
}
@Override
public String toString() {
return "Album{" +
"albumTitle='" + albumTitle + '\'' +
", albumImgPath='" + albumImgPath + '\'' +
", songList=" + songList +
'}';
}
}
public class Song {
private String songTitle;
private String playTime;
private String assPath;
private String ampPath;
public Song() {
}
public Song(String songTitle, String playTime, String assPath, String ampPath) {
this.songTitle = songTitle;
this.playTime = playTime;
this.assPath = assPath;
this.ampPath = ampPath;
}
public String getSongTitle() {
return songTitle;
}
public void setSongTitle(String songTitle) {
this.songTitle = songTitle;
}
public String getPlayTime() {
return playTime;
}
public void setPlayTime(String playTime) {
this.playTime = playTime;
}
public String getAssPath() {
return assPath;
}
public void setAssPath(String assPath) {
this.assPath = assPath;
}
public String getAmpPath() {
return ampPath;
}
public void setAmpPath(String ampPath) {
this.ampPath = ampPath;
}
@Override
public String toString() {
return "Song{" +
"songTitle='" + songTitle + '\'' +
", playTime='" + playTime + '\'' +
", assPath='" + assPath + '\'' +
", ampPath='" + ampPath + '\'' +
'}';
}
}
我是否必须在我的所有模型中实现 parcel able 或 serializable class?
我做bundle的时候正确的方法是什么? (putSerializable?putParcelable?)
如何在片段中获取列表。
您可以在您的模型中实现 parcelable class。
public class ModelClass implements Parcelable {
public ModelClass(Parcel in) {
super();
readFromParcel(in);
}
public static final Parcelable.Creator<ModelClass> CREATOR = new Parcelable.Creator<ModelClass>() {
public ModelClass createFromParcel(Parcel in) {
return new ModelClass (in);
}
public ModelClass [] newArray(int size) {
return new ModelClass [size];
}
};
public void readFromParcel(Parcel in) {
Value1 = in.readInt();
Value2 = in.readInt();
Value3 = in.readInt();
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(Value1);
dest.writeInt(Value2);
dest.writeInt(Value3);
}
}
正在将对象发送到片段。
ArrayList<ModelClass> arraylist = new Arraylist<>();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("arraylist", arraylist);
从片段接收对象
Bundle extras = getIntent().getExtras();
ArrayList<ModelClass> arraylist = extras.getParcelableArrayList("arraylist");
ModelClass model= arrayList[0];
Thers 是将列表从 Activity 传递到 Fragment 的两种方法。
1.Serializable 和 2.Parcelable
我是否必须在我的所有模型 class 中实现 parcel able 或 serializable? --> 是的,您必须在所有 classes
中实现 Parcelable 或 serializable
当我制作bundle时,正确的方法是什么? (putSerializable? putParcelable?) --> 如果你正在使用 serializable 那么你必须使用 putSerializable 否则 putParcelable
如何在片段中获取列表。 -->
1.使用 Serializable
发送对象列表
Bundle bundle = new Bundle();
bundle.putSerializable("key",arraylist);
接收对象列表
List<Model> = (List<Model>) getArguments().getSerializable("key);
2。使用 Parcelable
发送对象列表
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("key", arraylist);
接收对象列表
List<Model> arraylist = getArguments().getParcelableArrayList("arraylist");
我想将 List 从 Activity 传递给 Fragment。但我不知道模型 class 必须实现 'Parcelable' 或 'Serializable'。还有如何定义实现方法。感谢您看到这个问题。代码下面是我的模型 class.
public class Artist {
private String artistName;
private String aritstImgPath;
private List<Album> albumList;
public Artist() {
}
public Artist(String artistName, String aritstImgPath, List<Album> albumList) {
this.artistName = artistName;
this.aritstImgPath = aritstImgPath;
this.albumList = albumList;
}
public String getArtistName() {
return artistName;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public String getAritstImgPath() {
return aritstImgPath;
}
public void setAritstImgPath(String aritstImgPath) {
this.aritstImgPath = aritstImgPath;
}
public List<Album> getAlbumList() {
return albumList;
}
public void setAlbumList(List<Album> albumList) {
this.albumList = albumList;
}
@Override
public String toString() {
return "Artist{" +
"artistName='" + artistName + '\'' +
", aritstImgPath='" + aritstImgPath + '\'' +
", albumList=" + albumList +
'}';
}
}
public class Album {
private String albumTitle;
private String albumImgPath;
private List<Song> songList;
public Album() {
}
public Album(String albumTitle, String albumImgPath, List<Song> songList) {
this.albumTitle = albumTitle;
this.albumImgPath = albumImgPath;
this.songList = songList;
}
public String getAlbumTitle() {
return albumTitle;
}
public void setAlbumTitle(String albumTitle) {
this.albumTitle = albumTitle;
}
public String getAlbumImgPath() {
return albumImgPath;
}
public void setAlbumImgPath(String albumImgPath) {
this.albumImgPath = albumImgPath;
}
public List<Song> getSongList() {
return songList;
}
public void setSongList(List<Song> songList) {
this.songList = songList;
}
@Override
public String toString() {
return "Album{" +
"albumTitle='" + albumTitle + '\'' +
", albumImgPath='" + albumImgPath + '\'' +
", songList=" + songList +
'}';
}
}
public class Song {
private String songTitle;
private String playTime;
private String assPath;
private String ampPath;
public Song() {
}
public Song(String songTitle, String playTime, String assPath, String ampPath) {
this.songTitle = songTitle;
this.playTime = playTime;
this.assPath = assPath;
this.ampPath = ampPath;
}
public String getSongTitle() {
return songTitle;
}
public void setSongTitle(String songTitle) {
this.songTitle = songTitle;
}
public String getPlayTime() {
return playTime;
}
public void setPlayTime(String playTime) {
this.playTime = playTime;
}
public String getAssPath() {
return assPath;
}
public void setAssPath(String assPath) {
this.assPath = assPath;
}
public String getAmpPath() {
return ampPath;
}
public void setAmpPath(String ampPath) {
this.ampPath = ampPath;
}
@Override
public String toString() {
return "Song{" +
"songTitle='" + songTitle + '\'' +
", playTime='" + playTime + '\'' +
", assPath='" + assPath + '\'' +
", ampPath='" + ampPath + '\'' +
'}';
}
}
我是否必须在我的所有模型中实现 parcel able 或 serializable class?
我做bundle的时候正确的方法是什么? (putSerializable?putParcelable?)
如何在片段中获取列表。
您可以在您的模型中实现 parcelable class。
public class ModelClass implements Parcelable {
public ModelClass(Parcel in) {
super();
readFromParcel(in);
}
public static final Parcelable.Creator<ModelClass> CREATOR = new Parcelable.Creator<ModelClass>() {
public ModelClass createFromParcel(Parcel in) {
return new ModelClass (in);
}
public ModelClass [] newArray(int size) {
return new ModelClass [size];
}
};
public void readFromParcel(Parcel in) {
Value1 = in.readInt();
Value2 = in.readInt();
Value3 = in.readInt();
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(Value1);
dest.writeInt(Value2);
dest.writeInt(Value3);
}
}
正在将对象发送到片段。
ArrayList<ModelClass> arraylist = new Arraylist<>();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("arraylist", arraylist);
从片段接收对象
Bundle extras = getIntent().getExtras();
ArrayList<ModelClass> arraylist = extras.getParcelableArrayList("arraylist");
ModelClass model= arrayList[0];
Thers 是将列表从 Activity 传递到 Fragment 的两种方法。 1.Serializable 和 2.Parcelable
我是否必须在我的所有模型 class 中实现 parcel able 或 serializable? --> 是的,您必须在所有 classes
中实现 Parcelable 或 serializable
当我制作bundle时,正确的方法是什么? (putSerializable? putParcelable?) --> 如果你正在使用 serializable 那么你必须使用 putSerializable 否则 putParcelable
如何在片段中获取列表。 -->
1.使用 Serializable
发送对象列表
Bundle bundle = new Bundle();
bundle.putSerializable("key",arraylist);
接收对象列表
List<Model> = (List<Model>) getArguments().getSerializable("key);
2。使用 Parcelable
发送对象列表
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("key", arraylist);
接收对象列表
List<Model> arraylist = getArguments().getParcelableArrayList("arraylist");