j'ai une classe nommée PageItem
, qui a un constructeur qui prend un Context
comme paramètre:Gson désérialisation objets imbriqués avec InstanceCreator
PageItem(Context context)
{
super(context);
this.context = context;
}
PageItem
a ces propriétés:
private int id;
private String Title;
private String Description;
public Newsprovider newsprovider;
public Topic topic;
Newsprovider
et Topic
sont autres classes de mon application et ont les constructeurs suivants:
Newsprovider (Context context)
{
super(context);
this.context = context;
}
Topic (Context context)
{
super(context);
this.context = context;
}
PageItem
, Newsprovider
et Topic
sont des sous-classes de SQLiteOpenHelper
.
Je veux désérialiser tableau PageItem
avec Gson, j'ai donc écrit:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PageItem.class, new PageItemInstanceCreator(context));
Gson gson = gsonBuilder.create();
Pageitem pis[] = gson.fromJson(s, PageItem[].class);
avec PageItemInstanceCreator
défini comme:
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;
}
}
Lorsque le débogage, une instance PageItem
a correctement "MainActivity" comme contexte tout en mais sa variable membre newsprovider
a le contexte = null.
Gson a créé l'objet PageItem
en utilisant le bon constructeur mais il a créé l'instance Newsprovider
en utilisant le constructeur par défaut sans paramètre. Comment puis-je réparer cela?