Mam klasy o nazwie PageItem
, który ma konstruktora, że trwa Context
jako parametru:Gson deserializacji zagnieżdżone obiekty z InstanceCreator
PageItem(Context context)
{
super(context);
this.context = context;
}
PageItem
ma następujące właściwości:
private int id;
private String Title;
private String Description;
public Newsprovider newsprovider;
public Topic topic;
Newsprovider
i Topic
są inne klasy mojej aplikacji i mają następujących konstruktorów:
Newsprovider (Context context)
{
super(context);
this.context = context;
}
Topic (Context context)
{
super(context);
this.context = context;
}
PageItem
, Newsprovider
i Topic
są podklasami SQLiteOpenHelper
.
Chcę deserializowania PageItem
tablicę z Gson, więc napisałem:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PageItem.class, new PageItemInstanceCreator(context));
Gson gson = gsonBuilder.create();
Pageitem pis[] = gson.fromJson(s, PageItem[].class);
z PageItemInstanceCreator
zdefiniowany jako:
public class PageItemInstanceCreator implements InstanceCreator<PageItem>
{
private Context context;
public PageItemInstanceCreator(Context context)
{
this.context = context;
}
@Override
public PageItem createInstance(Type type)
{
PageItem pi = new PageItem(context);
return pi;
}
}
Gdy debugowanie, instancja PageItem
ma poprawnie "główną działalność" jako kontekstu podczas , ale jego zmienna składowa newsprovider
ma context = null.
Gson utworzył obiekt PageItem
używając prawego konstruktora, ale utworzył instancję Newsprovider
przy użyciu domyślnego konstruktora bez parametrów. Jak mogę to naprawić?