Autore Topic: SimpleCursorAdapter personalizzato e bottone  (Letto 461 volte)

Offline Cleon I

  • Utente junior
  • **
  • Post: 54
  • Sono l'imperatore della galassia
  • Respect: +3
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG L70, Nexus 7 2013, Asus Z300
  • Sistema operativo:
    LinuxMint Cinnamon 18.3
SimpleCursorAdapter personalizzato e bottone
« il: 12 Dicembre 2017, 17:54:28 CET »
0
Buonasera,
questo è il mio primo post qui scusatemi quindi se ho sbagliato sezione o altro.

Ecco il mio problema.
Ho un'applicazione che legge il database e spara il risultato tramite ListView, il tutto funziona ma dovendo gestire già il click sull'elemento della lista per un'altra funzione ho deciso di creare un layout personalizzato per l'adapter contenente un bottone utile alla cancellazione del record.
Ho creato quindi il layout e una classe figlia di SimpleCursorAdapter, all'interno della stessa ho gestito il bottone e sono riuscito a far cancellare il record (forse abbondando con i parametri). Il record viene cancellato ma l'activity non viene ricaricata quindi fino al suo riavvio (basta anche girare il dispositivo) ho visualizzato ancora l'elemento della lista che ho cancellato.
In altri casi (dove l'aggiunta di record o la cancellazione viene tramite bottone intercettato dall'activity), ho semplicemente rifatto al query, creato una nuova istanza dell'adapter ripassandola alla ListView, in questo caso come lo gestisco? L'evento sul pulsante lo intercetto nella classe dove definisco l'adapter e quindi?

Consigli? Poteva essere utile il deprecato metodo requery() della classe Cursor? Se si come faccio questo "This method was deprecated in API level 11. Don't use this. Just request a new cursor, so you can do this asynchronously and update" (documentazione ufficiale della classe Cursor)

Sono ben accetti anche consigli su metodi alternativi (anche se visivamente il risultato mi piace)

Grazie per le eventuali risposte, adesso non ho il codice sottomano ma se serve lo posterò quanto prima

PS: ho fatto prima una ricerca sul forum e non ho trovato niente di utile

Online iClaude

  • Utente normale
  • ***
  • Post: 325
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:SimpleCursorAdapter personalizzato e bottone
« Risposta #1 il: 12 Dicembre 2017, 19:15:01 CET »
0
Se devi ancora implementare l'app, ti consiglio di utilizzare direttamente il "nuovo sistema".
Intanto sostituisci la ListView con una RecyclerView, che è ormai lo standard.

In secondo luogo, per gestire il database e visualizzare i risultati nella UI, dai un'occhiata agli architecture components, che utilizzano un approccio basato sul reactive programming (tipo RxJava) e risolvono tutti i problemi legati al vecchio metodo (cambi di configurazione, aggiornamento automatico della UI al variare dei dati, ecc.):
https://developer.android.com/topic/libraries/architecture/index.html

In estrema sintesi:
- Room gestisce il database e fornisce i risultati delle query come LiveData (che sono degli observable)
- ViewModel incorpora il LiveData e mantiene i dati anche in caso di cambi di configurazione
- la tua Activity/Fragment registra un observer che viene invocato automaticamente ogni qual volta l'origine dei dati cambia

Offline Cleon I

  • Utente junior
  • **
  • Post: 54
  • Sono l'imperatore della galassia
  • Respect: +3
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG L70, Nexus 7 2013, Asus Z300
  • Sistema operativo:
    LinuxMint Cinnamon 18.3
Re:SimpleCursorAdapter personalizzato e bottone
« Risposta #2 il: 13 Dicembre 2017, 11:13:48 CET »
0
grazie leggerò la documentazione che mi hai linkato

 :-)  nel frattempo ho tolto il pulsante  :-)

Online iClaude

  • Utente normale
  • ***
  • Post: 325
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:SimpleCursorAdapter personalizzato e bottone
« Risposta #3 il: 13 Dicembre 2017, 11:52:40 CET »
0
Cmq, se è troppo complicato passare al nuovo sistema, prova a guardare qua: la parte modificata della prima risposta:
https://stackoverflow.com/questions/1985955/android-simplecursoradapter-doesnt-update-when-database-changes

Offline Cleon I

  • Utente junior
  • **
  • Post: 54
  • Sono l'imperatore della galassia
  • Respect: +3
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG L70, Nexus 7 2013, Asus Z300
  • Sistema operativo:
    LinuxMint Cinnamon 18.3
Re:SimpleCursorAdapter personalizzato e bottone
« Risposta #4 il: 14 Dicembre 2017, 11:24:51 CET »
0
avevo visto proprio quel topic (o uno simile) e l'ho anche provato

il gioco non ha funzionato quindi ho tolto il bottone in attesa di studiare un nuovo metodo

passare al nuovo sistema è difficile per tre motivi:

1)  l'app anche se praticamente inutilizzata è alla versione 2 quindi lo scheletro è fatto
2) l'app è nata durante un corso base che ho messo in piedi sul mio sito per imparare insieme ai lettori (https://www.wearegeek.it) quindi non vorrei stravolgere troppo i sorgenti rilasciando li stessi open source
3) il tempo a mia disposizione è poco e sinceramente non c'ho capito un' H :-)