Я посмотрел на API, который вы связали, и Album
выглядит крайне сложно для посылки.Я бы сказал, что вам лучше перезапустить список в следующем упражнении (а не пытаться передать список).
Единственный способ «создать» новый экземпляр Album
- это черезgetInfo()
статический фабричный метод.Вы можете создать новый класс AlbumWrapper
, который будет доступен для отправки, отправить список AlbumWrapper
через Intent, а затем использовать getInfo()
на другой стороне для повторного извлечения альбомов.
public class AlbumWrapper implements Parcelable {
// insert CREATOR here
public final String artist;
public final String mbid;
public AlbumWrapper(Album a) {
this.artist = a.getArtist();
this.mbid = a.getMbid();
}
private AlbumWrapper(Parcel in) {
this.artist = in.readString();
this.mbid = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(artist);
dest.writeString(mbid);
}
@Override
public int describeContents() {
return 0;
}
}
Вы можете поместить свой список альбомов в цель следующим образом:
ArrayList<AlbumWrapper> wrappers = new ArrayList<>();
for (Album album : albums) {
AlbumWrapper wrapper = new AlbumWrapper(album);
wrappers.add(wrapper);
}
intent.putParcelableArrayListExtra("ALBUM_WRAPPERS", wrappers);
А затем в своем следующем упражнении вы можете сделать что-то вроде:
List<AlbumWrapper> wrappers = getIntent().getParcelableArrayListExtra("ALBUM_WRAPPERS");
List<Album> albums = new ArrayList<>();
for (AlbumWrapper wrapper : wrappers) {
Album album = Album.getInfo(wrapper.artist, wrapper.mbid, YOUR_API_KEY);
albums.add(album);
}