Я получаю эту ошибку:
Невозможно вызвать конструктор без аргументов для интерфейса com.jimmy.common.ItemWrapper. Регистрация InstanceCreator в Gson для этого типа может решить эту проблему.
У меня есть List<ItemWrapper>
, который может быть Dog
, Cat
или Snake
класса. Мне нужно конвертировать из json в List<ItemWrapper>
, а затем в другие классы, чтобы конвертировать ItemWrapper
в Dog
, Cat
или Snake
Я попытался найти несколько примеров InstanceCreater, но ничего не понял.
Мой интерфейс и ItemWrapperConverter
:
public interface ItemWrapper{
int getViewType();
int getId();
void setId(int id);
// делать их пустыми для всех кроме тех кому они нужны
void setName(String n);
void setDescription(String d);
void setColor(String c);
void changeNote(int i, String k, String p, long l);
void changeNote(String k, String p, long l);
void addNote(Note n);
void deleteNote(int i);
}
public class ItemWrapperConverter {
@TypeConverter
public String fromItemWrapper(List<ItemWrapper> itemWrappers) {
if (itemWrappers == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
String json = gson.toJson(itemWrappers, type);
return json;
}
@TypeConverter
public List<ItemWrapper> toItemWrapper(String ItemWrapperString) {
if (ItemWrapperString == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
List<ItemWrapper> itemWrappers = gson.fromJson(ItemWrapperString, type);
return itemWrappers;
}
}
У меня есть List<ItemWrapper>
, который может быть Dog
, Cat
или Snake
класса. Мне нужно конвертировать из json в List<ItemWrapper>
, а затем в другие классы конвертировать ItemWrapper
в Dog
, Cat
или Snake