Autore Topic: eliminare elemento da una listview  (Letto 737 volte)

Offline Rino63

  • Utente normale
  • ***
  • Post: 161
  • Respect: +3
    • Mostra profilo
eliminare elemento da una listview
« il: 01 Febbraio 2014, 15:28:04 CET »
0
ho un insieme di dati in un database che vengono recuperati da una query e possati tramite un simpleadapter ad una listview. tutto funziona, carico,seleziono,cancello regolarmente un record nel db selezionandolo dalla lista. vorrei aggiornare automaticamente il contenuto della listview.
la mia fonte dati si chiama data e la listview si chiama mylist.
dopo il delete nel db, ho provato a fare data.remove(id); ma l'applicazione si blocca(se è importante preciso che il db è ancora aperto).
qualche anima buona ha qualche suggerimento? Grazie per l'attenzione.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:eliminare elemento da una listview
« Risposta #1 il: 01 Febbraio 2014, 15:58:42 CET »
0
E' corretto rimuovere l'elemento dalla base dati, ma potrebbe essere errato l'id che passi per identificarlo.
Verifica con un po' di Log.d().
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 161
  • Respect: +3
    • Mostra profilo
Re:eliminare elemento da una listview
« Risposta #2 il: 01 Febbraio 2014, 17:05:17 CET »
0
l'id è corretto, sul primo elemento della lista mi restituisce 0 sel secondo 1 e così via. mi succede una cosa strana. cancello il record dal db, attendo qualche secondo senza fare nulla, trascino in basso la lista e la lista scorre. appena faccio un click per selezionare un altro elemento va in crash.......

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:eliminare elemento da una listview
« Risposta #3 il: 01 Febbraio 2014, 22:38:35 CET »
0
Serve il logcat per capire cosa accade
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 161
  • Respect: +3
    • Mostra profilo
Re:eliminare elemento da una listview
« Risposta #4 il: 02 Febbraio 2014, 13:37:45 CET »
0
ecco cosa succede nel log:
02-02 12:33:38.357: E/SQLiteDatabase(541):    at dalvik.system.NativeStart.main(Native Method)
02-02 12:33:48.647: D/List(541): Ho cliccato sull'elemento con pos0
02-02 12:33:48.647: D/List(541): Ho cliccato sull'elemento con id0
02-02 12:33:53.538: D/List(541): Ho cliccato sull'elemento con pos1
02-02 12:33:53.538: D/List(541): Ho cliccato sull'elemento con id1
02-02 12:33:57.648: D/List(541): Ho cliccato sull'elemento con pos0
02-02 12:33:57.658: D/List(541): Ho cliccato sull'elemento con id0
02-02 12:34:10.377: D/dalvikvm(541): GC_CONCURRENT freed 205K, 6% free 6131K/6471K, paused 11ms+13ms

quando scorro la lista l'elemento che ho eliminato non compare più ma se clicko di nuovo--> crash :(

il frammento di codi incriminato è questo :
                            
                             db.open();
                             db.delete(qry3, campo, value);
                             data.remove(pos);
                             db.close();

Post unito: 02 Febbraio 2014, 17:38:38 CET
aggiornamento ho notato che se:
1) cancello il dato dal db (il dato non viene rimosso dalla lista)
2) faccio scorrere la lista fino a nascondere il dato che ho cancellato dal db
3)quando la faccio scorrere in senso inverso la lista poi non mostra più il dato cacellato(a questo punto capisco non ridisegna l'item e questo forse è la chiave di tutto)
4) faccio un click sulla lista e crash!

« Ultima modifica: 02 Febbraio 2014, 17:38:38 CET da Rino63, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:eliminare elemento da una listview
« Risposta #5 il: 02 Febbraio 2014, 19:29:28 CET »
0
Cattura il logcat del crash, c'è scritto quale è la causa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 161
  • Respect: +3
    • Mostra profilo
Re:eliminare elemento da una listview
« Risposta #6 il: 02 Febbraio 2014, 19:30:27 CET »
0
risolto. ho creato un metodo carica dati al quale passo il db e un parametro necessario a ricostruire tutta la lista. il data.remove a questo punto non serve più. resta da vedere quanto sarà performante con un db che conterrà al massimo 700 record ma non credo che con questi numeri ci saranno problemi.
grazie a tutti per sopportarmi :)