Amaçları geçmem gereken Nesneler yaratan iki sınıfım var, şu anda bunu yapmak için Parcelable kullanmaya çalışıyorum. test itibarenÖzel nesnelerin ArrayList'lerini ayrıştırma Parentlable
import android.os.Parcel;
import android.os.Parcelable;
public class Item implements Parcelable {
private String name;
private double price;
private int buyerCount = 0;
public Item(String name, double price) {
this.name = name;
this.price = price;
}
private Item(Parcel in) {
name = in.readString();
price = in.readDouble();
}
public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>() {
public Item createFromParcel(Parcel in) {
return new Item(in);
}
public Item[] newArray(int size) {
return new Item[size];
}
};
@Override
public int describeContents() {
return 0;
}
public double getPrice() {
return price;
}
public int getBuyerCount() {
return buyerCount;
}
public void incrementBuyerCount() {
buyerCount += 1;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeDouble(price);
}
}
şimdiye kadar benim Öğe nesne bunu paket ne zaman doğru bilgi aktarımı gibi görünüyor.
Ancak, ikinci sınıftaki Diner'm bir Nesne listesi nesnesi içeriyor Öğe ve Parcelable'ı bu sınıfta, özellikle de yorum yaptığım kısımlarda doğru şekilde nasıl uygulayacağından emin değilim. Görüyorum ki readParsableArray() yöntemi var ancak ArrayLists için bir şey yok.
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;
}
}
Parlatılabilir kodu elle yazmak hatalıdır. Android Studio/IntelliJ kullanıyorsanız, bunu yapmak için [Parcelabler] 'ı (https://github.com/dallasgutauckis/android-parcelable-intellij-plugin) kullanabilirsiniz. – Emmanuel
Ne yazık ki bu bir okul proje ödevi için, bu yüzden dış eklentileri kullanarak kaşları çattı. – user3371750
Profesörünüzle konuşun ve güzel bir şekilde, eğer geliştiricilerin gerçek dünyada yaptıklarını veya gitmelerini istemediklerini sorarlar. – Emmanuel