Mam dwie klasy, które tworzą Obiekty, które muszę przejść przez intencje, obecnie próbuję wdrożyć Parcelable, aby to zrobić.Tworzenie listy ArrayList obiektów niestandardowych
Z dotychczasowych testów mój obiekt obiektu wydaje się prawidłowo przekazywać informacje, kiedy je pakuję.
Jednak mój drugi Diner klasy zawiera ArrayList obiektów Przedmiot i nie jestem pewien, jak poprawnie wdrożyć Parcelable w tej klasie, szczególnie w częściach, które skomentowałem. Widzę, że istnieje metoda readParsableArray(), ale nic dla ArrayLists.
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
public class Diner implements Parcelable {
private String name;
private ArrayList<Item> itemList = new ArrayList<Item>();
public Diner(String name) {
this.name = name;
}
private Diner(Parcel in) {
name = in.readString();
// How to read in ArrayList itemList of item objects?
itemList = in.readParcelableArray();
}
public static final Parcelable.Creator<Diner> CREATOR = new Parcelable.Creator<Diner>() {
public Diner createFromParcel(Parcel in) {
return new Diner(in);
}
public Diner[] newArray(int size) {
return new Diner[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
// How to write ArrayList itemList of item objects?
dest.writeParcelableArray(itemList);
}
public void addItem(Item foodItem) {
itemList.add(foodItem);
foodItem.incrementBuyerCount();
}
public double getPrice() {
double total = 0;
for(Item item : itemList) {
total += item.getPrice()/item.getBuyerCount();
}
return total;
}
public String toString() {
return name;
}
}
Ręczne pisanie kodu paczek jest podatne na błędy. Jeśli używasz Androida Studio/IntelliJ, możesz użyć [Parcelabler] (https://github.com/dallasgutauckis/android-parcelable-intellij-plugin), aby zrobić to za Ciebie. – Emmanuel
Niestety jest to projekt szkolny, dlatego uważam, że używanie zewnętrznych wtyczek jest marszczeniem brwi. – user3371750
Porozmawiaj ze swoim profesorem iw miły sposób zapytaj go, czy chce, żebyś zrobił to tak, jak robią to programiści w realnym świecie, czy nie. – Emmanuel