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

Composants graphiques Android Discussion :

Mettre à jour une arraylist en ajoutant un item depuis un bouton


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Mettre à jour une arraylist en ajoutant un item depuis un bouton
    Salut,

    J'ai une arraylist définie dans la classe suivante :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    public class ListAlarme {
    	public final static int defaut = 1;
    	public final static int grave = 2;		
    	public String idAlarme;
    	public String typeAlarme;
    	public int genre;
     
    	public ListAlarme(String aid, String atype, int aGenre) {
    		idAlarme = aid;
    		typeAlarme = atype;
    		genre = aGenre;
    	}
     
    	public static ArrayList<ListAlarme> getAListOfAlarms() {
    		ArrayList<ListAlarme> listAl = new ArrayList<ListAlarme>();
     
    		listAl.add(new ListAlarme("alarme1 ", "type1 ", defaut));
    		listAl.add(new ListAlarme("alarme2 ", "type2 ", grave));
    		listAl.add(new ListAlarme("alarme3 ", "type3 ", grave));
    		listAl.add(new ListAlarme("alarme4 ", "type4 ", defaut));
    		listAl.add(new ListAlarme("alarme5 ", "type5 ", defaut));
    		listAl.add(new ListAlarme("alarme6 ", "type6 ", grave));
    		listAl.add(new ListAlarme("alarme7 ", "type7 ", defaut));
    		listAl.add(new ListAlarme("alarme8 ", "type8 ", grave));
    		listAl.add(new ListAlarme("alarme9 ", "type9 ", grave));
    		listAl.add(new ListAlarme("alarme10", "type10", defaut));
    		listAl.add(new ListAlarme("alarme11", "type11", grave));
    		listAl.add(new ListAlarme("alarme12", "type12", grave));
    		listAl.add(new ListAlarme("alarme13", "type13", defaut));
    		listAl.add(new ListAlarme("alarme14", "type14", grave));
     
    		return listAl;
    	}
     
    	public String toString() {
    	     return "id : "+idAlarme+", type : "+typeAlarme+", genre : "+genre+".";
    	}
    Et j'ai une activity qui contient un menu d'options. dans ce menu il y a un bouton update qui doit me permettre d'ajouter un item dans cette arraylist.
    J'ai essayé de faire comme celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case R.id.update:Toast.makeText(this, " alarms update", Toast.LENGTH_LONG).show();   
     
                 ListView list = (ListView)findViewById(R.id.listalarme);
                 ListAlarme.getAListOfAlarms().add(new ListAlarme("NEWalarme ", "typeX ", ListAlarme.defaut));        
                 list.invalidateViews();
    Mais quand je clique sur update, le toast s'affiche bien, mais pas mon nouvel item.
    Je ne sais pas si c'est le bon endroit pour créer cet item, mais si je peux le faire ici quelqu'un peut-il me dire ce que j'ai oublié? ou alors est-ce que je dois déclarer cet item dans ma classe ListAlarme et l'afficher seulement quand je clique sur ce bouton??

    Je ne sais pas si c'est clair, en tout cas merci d'avance pour vos conseils.

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Il faut indiqué à l'adapter de ta listview que t'es donnée on été modifié pour cela il ne faut pas passer ar un invalide mais par un notifyDataSetChanged.
    http://developer.android.com/referen...taSetChanged()

    qui indiqueras à l'adapter des changements de données et lui demandera de se rafarîchir .

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour l'info! je regarde la doc et j'essaye

    ----EDIT----
    voici mon code maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case R.id.update:Toast.makeText(this, " alarms update", Toast.LENGTH_LONG).show();   
    	             list = (ListView)findViewById(R.id.listalarme);
    	             ListAlarme.getAListOfAlarms().add(new ListAlarme("NEWalarme ", "typex ", ListAlarme.defaut));        
    	             adapter = (AlarmeAdapter)list.getAdapter();
    	             adapter.notifyDataSetChanged();
                 				  break;
    Mais je ne met toujours pas la liste à jour, j'ai essayé de mettre le notifiedDataSetChanger dans la classe adapter (dans une fonction que j'appelais avec update), mais ça ne fonctionne pas non plus :s j'ai cherché des examples sur internet et je pense avoir bien utilisé ce notifyDataSetChanger, mais peut-être ne l'ai-je pas correctement adapté à mon programme.


    ---EDIT2----
    Problème résolu une erreur de nom de variable =) merci beaucoup pour le coup de main
    Dernière modification par Invité ; 07/07/2011 à 12h24.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/06/2014, 13h02
  2. Prb mettre à jour une table via un fichier excel
    Par antier dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 10h31
  3. Mettre à jour une base sous SQL SERVER 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/02/2005, 12h24
  4. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  5. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08

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