У меня после Class
и я хочу, чтобы сделать его Parcelable
Проблемы заключается в том, что, когда я прочитал isHidden and Counter
переменные из int[] arraySongIntegers
метода in.createIntArray()
, я получаю пустой массив размера 0 и BTW все переменные строковый быть правильно читать. Скажите, пожалуйста, как мне написать все переменные в Parcel
и правильно прочитать их.Как сделать класс с несколькими целыми и строковыми параметрами?
public class Song implements Parcelable{
public static long firstSongId;
private long id;
private String title ,mimeType, artist , dateAdded ,album;
private int isHidden ,counter; // 0 is false , 1 is true
public Song(Parcel in){
readFromParcel(in);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
int[] arraySongIntegers = new int[2];
arraySongIntegers[0] = isHidden;
arraySongIntegers[1] = counter;
dest.writeIntArray(arraySongIntegers);
dest.writeLong(id);
List<String> l = new ArrayList<>();
l.add(title);
l.add(artist);
l.add(album);
l.add(dateAdded);
dest.writeStringList(l);
}
public void readFromParcel(Parcel in){
id = in.readLong();
int[] arraySongIntegers = in.createIntArray();
isHidden = arraySongIntegers[0];
counter = arraySongIntegers[1];
ArrayList<String> list = in.createStringArrayList();
title = list.get(0);
artist = list.get(1);
album = list.get(2);
dateAdded = list.get(3);
}
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
public Song createFromParcel(Parcel in) {
return new Song(in);
}
public Song[] newArray(int size) {
return new Song[size];
}
};
}
Спасибо заранее.
Зачем вы пишете его как массив, а не как индивидуальный ints? –