Autore Topic: Cursor requery e DB  (Letto 1627 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Cursor requery e DB
« il: 23 Febbraio 2011, 01:17:01 CET »
0
Ciao a tutti, ho questo codice :
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                db = new ReadDB(getApplicationContext());
                db.OpenDB();
                cursore = db.TotalCursor(ReadDB.MetaData.TAB1);
                startManagingCursor(cursore);
                adapter = new SimpleCursorAdapter(this, R.layout.row, cursore, new String[]{ReadDB.MetaData.NOME ,ReadDB.MetaData.NUMERO,ReadDB.MetaData.DATA,ReadDB.MetaData.ORA},new int[]{R.id.Nome, R.id.Numero, R.id.Data, R.id.Ora})
                        .. OMISS ..
            getListView().setAdapter(adapter);
        registerForContextMenu(getListView());
        }
ora...se alla fine di questo codice metto db.close(); quando vado a richiamare le altre activity e poi ritorno in questa, pur richiamando l'aggiornamento mediante questo metodo :
Codice (Java): [Seleziona]
private void UpdateListView() {
                cursore.requery();
                adapter.notifyDataSetChanged();
        }

non mi aggiorna la lista...sò che dipende da quel db.close perchè se lo levo mi funziona....però come faccio ??? non posso mica passare da un activity ad un altra lasciando aperto il DB! sapete per caso perchè me lo fà ??

Offline Kappa27

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +2
    • kevvort
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab
  • Sistema operativo:
    Windows 7 x64 - Ubuntu 10.10
Re:Cursor requery e DB
« Risposta #1 il: 23 Febbraio 2011, 08:51:20 CET »
0
Non ti conviene aprirlo e chiuderlo in ogni activity?

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #2 il: 23 Febbraio 2011, 09:08:49 CET »
0
Non ti conviene aprirlo e chiuderlo in ogni activity?
Ma è quello che faccio...se nell'onCreate apro e chiudo il db dopo l'operazione di Adapter quando poi faccio qualche operazione sul DB tipo un insert oppure un update, sia esso dalla stessa activity o da un'altra, quando chiamo il requery ed il notifyDataSetChanged non mi aggiorna niente, per vedere la lista aggiornata devo riavviare l'applicazione...

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #3 il: 23 Febbraio 2011, 10:36:51 CET »
0
se chiudi il db il cursore si perde, e requery non va. devi rifarlo da capo!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #4 il: 23 Febbraio 2011, 12:14:02 CET »
0
Azz è quindi ?? tu come faresti dato che io il SimpleCursorAdapter ce l'ho nel onCreate? se facessi un Override del onResume e mettessi super.onCreate ?? se pò fà ? :D Altrimenti altre idee ??

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cursor requery e DB
« Risposta #5 il: 23 Febbraio 2011, 12:32:50 CET »
0
Prova a spostare db.close() nel metodo onDestroy

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #6 il: 23 Febbraio 2011, 13:01:45 CET »
0
Già fatto ma il problema sostanziale è che l'ondestroy non sempre viene chiamato se ad esempio il terminale si spegne improvvisamente....

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cursor requery e DB
« Risposta #7 il: 23 Febbraio 2011, 13:08:18 CET »
0
Beh che ti frega, al massimo non si chiude il db :P

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #8 il: 23 Febbraio 2011, 14:00:24 CET »
0
Eh eh lo sapevo che me lo avresti detto :) il problema è che ho un BrodcastReceiver sul BOOT_COMPLETED che lancia un Alarm e quando riavvio il terminale senza chiudere l'applicazione al riavvio mi dà un messaggio di errore SQLCursor...mentre quando riavvio chiudendo prima l'applicazione non me lo fà quindi l'unica cosa che mi era venuta in mente era che il db restava aperto e faceva casini...

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Cursor requery e DB
« Risposta #9 il: 23 Febbraio 2011, 16:11:52 CET »
0
Ma che voi sappiate i cursori utilizzati nei metodi vanno comunque chiusi o deattivati alla fine del metodo o non fa nulla ? cioè se io dall'onCreate richiamo un metodo

public void pippo(){
 Cursor cursore = null;
 ...
....
//DEVO CONCLUDERE COSIì ?
cursore.close();

}

o non occorre ?