IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récharger l'activité


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut Récharger l'activité
    Bonjour,
    J'ai une base donnée dont les éléments sont affiché dans une liste view , j'arrive à ajouter, modifier et supprimer un élément mais lorsque je supprime un élément et que j'ajoute un nouvelle élément celui ci n'est pas ajouté ni affiché et quand j'ajoute une deuxième fois , l'élément est bien ajouté dans la base donnée et affiché dans la listView.
    La base de donnée est composé d'objet Tache qui a un titre (string), une priorité (int) et un identifiant.
    Pour supprimé un élément de la listView, je clique dessus -> une boite de dialogue s'ouvre avec un bouton supprimé -> si je clique sur supprimé ca lance la méthode supprimer() et la boite de dialogue se ferme.
    Peut être que le problème vient de là et qu'il faudrait recharger l'activité ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Tache_BDD extends SQLiteOpenHelper {
     ...
     
        public void supprimeUneTacheById (Long id)
        {
     
            this.getWritableDatabase().delete(TABLE_TACHE,COL_ID + " = ?",new String[] {String.valueOf(id)});
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class MainActivity implements Dial.InterfaceSupprime { { 
    ...
     
        public void supprimer()
        {
            liste_taches = t_bdd.getAllTache(); Log.d("AVANT_SUPPRESSION",""+liste_taches);
            t_bdd.supprimeUneTacheById(id_bdd);
            String message = t.titre + "\npriorité: " + t.priorite + "\nSUPPRIMÉ";
            Toast.makeText(getApplicationContext(),message, Toast.LENGTH_LONG).show();
            adapteur();
      }
     
        public void adapteur()
        {
            liste_taches   = t_bdd.getAllTache(); <- récupere tous éléments de la base donnée.
            Log.d("adapteur"," "+liste_taches);
            adapter        = new AdaptateurPerso(this,liste_taches);
            setListAdapter(adapter);
     
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public class Dial extends DialogFragment  {
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View v  = inflater.inflate(R.layout.boite_de_dialogue, null);
     
             Button supprimer = (Button) v.findViewById(R.id.supprimer);
            supprimer.setOnClickListener(supprimeOnClick);
     
            return v;
        }
     
       ...
        private InterfaceSupprime mListener;
     
        View.OnClickListener supprimeOnClick = new View.OnClickListener() {
     
            public void onClick(View v) {
     
                mListener.supprimer();
                getDialog().dismiss();
     
            }
     
        };

  2. #2
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Oulàlà, tu recréés un nouvel adapteur à chaque fois (new AdaptateurPerso()), alors qu'il faut le créer une seule fois, puis lui demander de se rafraichir à chaque modification de tes données via la méthode notifyDataSetChanged()
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Quand je mets notifyDataSetChanged(); j'ai une erreur disant : cannot resolve method
    Au début je mettais notifyAll() mais la listView ne se mettait pas à jour.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    je me suis trompé j'avais mal fait le truc ^^
    je fais bien adapter.notifyDataSetChanged() mais il n'y pas de mise a jour au niveau de la listView

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    Peut-être que tu fais appel à adapter.notifyDataSetChanged() alors que l'adapter n'a pas encore été créé avec ses paramètres, si c'est le cas, essaye ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    									if(adapter == null) {
    										adapter = new AdaptateurPerso(this, liste_taches);
                                                                                    setListAdapter(adapter);
                                                                            }
    									else
    										adapter.notifyDataSetChanged();
    Cela permet donc de créer l'adapter si ce n'est pas fait, et pour la prochaine fois, de ne pas le recréer mais de le mettre à jour.

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/01/2006, 12h26
  2. [Threads] Monitorer l'activité de threads
    Par guipom dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 06/01/2006, 11h01
  3. [SQL][debutant]le jour où xxx à le plus d'activité
    Par goussepi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/12/2005, 14h52
  4. [CVS] Voir un rapport d'activité des développeurs ?
    Par elitost dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/10/2005, 15h13
  5. Activité d'un routeur
    Par knecmotet dans le forum Réseau
    Réponses: 2
    Dernier message: 04/01/2005, 00h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo