2010-09-10 9 views
2

Je suis la population ma listeAfficher en utilisant le curseur, mais quand je m'éloigne de mon activité, puis revenir en arrière ma liste est vide. Voici mon code:Comment enregistrer le curseur dans l'activité?

@Override 
public void onCreate(Bundle savedInstanceState) { 

... 

DBAdapter db = new DBAdapter(context); 
db.open(); 
Cursor c = db.getAll(); 
db.close(); 

startManagingCursor(c); 
String[] columns = new String[] { ... }; 
int[] to = new int[] { ... }; 
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.list_item, c, columns, to); 
this.setListAdapter(mAdapter); 

... 

} 

J'ai vu ici des questions sur la sauvegarde de la position du curseur, mais pas le curseur lui-même. Probablement je manque juste quelque chose, dois-je enregistrer mon curseur (comment puis-je le faire?) Ou il est préférable (plus rapide, moins cher) de créer un nouveau curseur à chaque fois en utilisant mon DBadapter?

Merci

+1

Je vois que vous utilisez déjà 'startManagingCursor' Cela se produit-il si vous commentez la méthode' db.close() '? – Pentium10

+0

merci, en effet si je commente 'db.close()' ma liste ne disparaît pas, mais ne sommes-nous pas supposés fermer la connexion chaque fois que nous utilisons DB? – Burjua

Répondre

3

startManagingCursor() rend votre close() appel inutile. Tant que vous n'avez pas eu d'exceptions à propos de ne pas finaliser ou de fermer votre curseur, vous avez fait quelque chose de bien.

+0

Dois-je effectuer d'autres actions pour m'assurer que la connexion est fermée et que la mémoire est libérée? par exemple. ajouter quelque chose à 'onPause()' ou quelque chose de similaire? merci – Burjua

+0

Tout est mentionné dans la documentation: Cette méthode permet à l'activité de prendre en charge la gestion du cycle de vie du Curseur pour vous en fonction du cycle de vie de l'activité. Autrement dit, lorsque l'activité est arrêtée, elle appelle automatiquement 'deactivate()' sur le curseur donné, et quand elle est relancée plus tard, elle appelle 'requery()' pour vous. Lorsque l'activité est détruite, tous les curseurs gérés seront automatiquement fermés. – WarrenFaith

+0

Ok, merci pour votre temps)) – Burjua