ho una classe denominata PageItem
, che ha un costruttore che prende un Context
come parametro:GSON deserializzazione oggetti nidificati con InstanceCreator
PageItem(Context context)
{
super(context);
this.context = context;
}
PageItem
ha queste proprietà:
private int id;
private String Title;
private String Description;
public Newsprovider newsprovider;
public Topic topic;
Newsprovider
e Topic
sono altre classi della mia domanda e hanno i seguenti costruttori:
Newsprovider (Context context)
{
super(context);
this.context = context;
}
Topic (Context context)
{
super(context);
this.context = context;
}
PageItem
, Newsprovider
e Topic
sono sottoclassi di SQLiteOpenHelper
.
voglio deserializzare PageItem
array con GSON, così mi ha scritto:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PageItem.class, new PageItemInstanceCreator(context));
Gson gson = gsonBuilder.create();
Pageitem pis[] = gson.fromJson(s, PageItem[].class);
con PageItemInstanceCreator
definito come:
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;
}
}
Quando il debug, un'istanza PageItem
ha correttamente "MainActivity" come contesto, mentre ma la sua variabile membro newsprovider
ha context = null.
Gson ha creato l'oggetto PageItem
utilizzando il costruttore corretto ma ha creato l'istanza Newsprovider
utilizzando il costruttore senza parametri predefinito. Come posso risolvere questo?