Autore Topic: requery () - This method is deprecated.  (Letto 1070 volte)

Offline ginoz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
requery () - This method is deprecated.
« il: 29 Aprile 2011, 17:10:39 CEST »
0
Nel sito ufficiale developers leggo

Citazione
public abstract boolean requery ()
This method is deprecated.
Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back.

Io avevo un cursore come variabile membro, nel onCreate facevo

Codice (Java): [Seleziona]
            mDbHelper = new AdapterDb(this);
            mDbHelper.open();
            mCursor = mDbHelper.fetchAll();
            startManagingCursor(mCursor);
            setListAdapter(new AdapterList(this, R.layout.list_row, mCursor));

Ma ho problemi quando nel onPause chiudo il db e poi ritorno nell'activity probabilmente ho perso il cursore.

Il richiedere un nuovo cursore mi risolverebbe il problema ma poi come lo passo alla ListView?

cosa vuole dire "so you can do this asynchronously and update your list view once the new cursor comes back"?

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:requery () - This method is deprecated.
« Risposta #1 il: 29 Aprile 2011, 18:12:16 CEST »
0
Non prenderlo per oro colato, ma dovrebbe significare un qualcosa del tipo:
  • Esegui una nuova query identica a quella utilizzata precedentemente (nel tuo caso, mDbHelper.fetchAll();)
  • Ne assegni il risultato al tuo mCursor
  • richiami nuovamente il tuo startManagingCursor(mCursor);
  • richiami nuovamente setListAdapter(new AdapterList(this, R.layout.list_row, mCursor));

E magari inserisci i punti 1,2 e 3 in un nuovo Thread()

PS
Ripeto: potrei aver scritto una o più (sicuramente più :) ) baggianate
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline ginoz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:requery () - This method is deprecated.
« Risposta #2 il: 29 Aprile 2011, 23:47:20 CEST »
0
Ma che controindicazioni ci sono a non usare un Cursore variabile membro dell'Activity?

Io mi sono poi costruito il metodo setList

Codice (Java): [Seleziona]
private void setList() {
        mDbHelper.open();
        Cursor c = mDbHelper.fetchAll();
        setListAdapter(new AdapterList(this, R.layout.list_row, c));
        c.close();
        mDbHelper.close();
}

e lo richiamo ogni volta che devo aggiornare l'activity. Ci sono problemi a fare così?

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re: requery () - This method is deprecated.
« Risposta #3 il: 30 Aprile 2011, 01:20:51 CEST »
0
Penso che così sia perfetto :)

Sent from my HTC Sapphire using Tapatalk
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker