我尝试使用Parceler来使用Ormlite,但Parceler会收到错误:
Error:(44, 36) error: Parceler: Unable to find read/write generator for type com.j256.ormlite.dao.ForeignCollection<PassKeyItem> for categoryItem.passKeyItems
这是我的对象:
categoryItem.class
@Parcel@Databasetable(tablename = "categorIEs")public class categoryItem { ... @ForeignCollectionFIEld(columnname = FIELD_PASS_KEY_ITEMS) ForeignCollection<PassKeyItem> passKeyItems;}
PassKeyItem.class
@Parcel@Databasetable(tablename = "passkey")public class PassKeyItem {... @DatabaseFIEld(foreign = true, foreignautoRefresh = true, columnname = FIELD_category_ITEM_ID) private categoryItem categoryItem;}
解决方法:
您需要提供转换器,因为Parceler不知道如何序列化ForeignCollection.
以下是文档中的示例:
@Parcelpublic class Item { @ParcelPropertyConverter(ItemListParcelConverter.class) public List<Item> itemList;}@Parcel public class SubItem1 extends Item {}@Parcel public class SubItem2 extends Item {}public class ItemListParcelConverter implements ParcelConverter<List<Item>> { @OverrIDe public voID toparcel(List<Item> input, Parcel parcel) { if (input == null) { parcel.writeInt(-1); } else { parcel.writeInt(input.size()); for (Item item : input) { parcel.writeParcelable(Parcels.wrap(item), 0); } } } @OverrIDe public List<Item> fromParcel(Parcel parcel) { int size = parcel.readInt(); if (size < 0) return null; List<Item> items = new ArrayList<Item>(); for (int i = 0; i < size; ++i) { items.add((Item) Parcels.unwrap(parcel.readParcelable(Item.class.getClassLoader()))); } return items; }}
更多信息,请访问https://github.com/johncarl81/parceler#custom-serialization
总结以上是内存溢出为你收集整理的java – Parceler:无法找到类型为ForeignCollection的读/写生成器全部内容,希望文章能够帮你解决java – Parceler:无法找到类型为ForeignCollection的读/写生成器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)