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 :

Cycle de vie d'une activité et mise à jour des données


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Cycle de vie d'une activité et mise à jour des données
    Bonjour à tous,

    J'ai actuellement une activity avec un listView qui se rempli via un arrayList qui lui même est rempli via une table sqlite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Initialisation du ListView dans le onCreate
    DataAdapter dataAdapter = new DataAdapter(this, R.layout.lv_dp_normal, dpDatas);
    listViewDP.setAdapter(dataAdapter);
    listViewDP.setDivider(getResources().getDrawable(R.drawable.divider));
    listViewDP.setDividerHeight(1);
    listViewDP.setOnItemClickListener(clickListViewItem());
    Sur cette activité je peux naviguer vers une autre activité qui elle me permet de remplir la table sqlite.

    Le problème actuel c'est que lorsque que je termine mon activity d'insertion de données et donc que je reviens sur l'activité avec le listView , les données ne se mettent pas à jour (car dans le onCreate).

    D'ou ma question , qu'elle est la meilleur solution pour palier à ce problème ? Dois je déplacer l'initialisation de mon listView dans le onResume par exemple ?
    Mon activité d'insertion pourrait elle simplement modifier l'arrayList de l'activité qui les listes les données ? (comment ?)

    Seconde question :

    Quand doit on appeler finish() dans une activity ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,

    Est ce ton activité qui possède la liste ou l'adapter ?

    Il faut mieux laisser l'initialisation de la listView dans le onCreate car elle doit se faire qu'une seule fois. Par contre la mise à jour peut très bien se faire dans le onResume de ton activité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Override
    protected void onResume() {
    	//Tu mets à jour ta liste
     
    	//Si c'est l'adapter qui conserve la liste à ajouter
    	monAdapter.setMyListeDeDonnee(myList);
     
    	//Tu mets à jour
    	monAdapter.notifyDataSetChanged();
    }
    Ensuite tu peux modifier la Liste d'une activité à partir d'une autre activité soit en mettant cette liste en static (c'est pas terrible) soit en passant l'Activity à ta nouvelle activité. Tu pourras utiliser les accesseurs pour modifier directement ta liste : activiteMere.setMyList(nouvelleListe);


    Quand tu appelles la méthode finish(). Cela qui l'activité et appelle les fonctions onPause, onStop et onDestroy. Par exemple après l'insertion des nouvelles données tu appuies sur le bouton retour que tu as créé et là dans le onClick tu peux mettre finish pour signaler que tu n'as plus besoin de cette activité

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Merci pour ta réponse,

    Est ce ton activité qui possède la liste ou l'adapter ?
    Je t'avoue ne pas bien comprendre. J'aurais tendance à dire que c'est l'adapter puisque j'ai une classe dataAdapter qui dérive de ArrayAdapter et qui prend le arrayList en paramètre dans le constructeur :

    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
    private class DataAdapter extends ArrayAdapter<DP>
    {
    	private ArrayList<DP> items;
    	public DataAdapter(Context context, int textViewResourceId,ArrayList<DP> items) {
    		super(context, textViewResourceId, items);
    		this.items = items;
    	}
     
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent)
    	{
    		if(convertView == null) {
    			LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    			convertView = vi.inflate(R.layout.lv_dp_normal, null);
    		}
     
    		DP dp = this.items.get(position);
    		if(dp != null)
    		{
    			TextView name = (TextView)convertView.findViewById(R.id.dp_name);
    			if(name != null)
    				name.setText(dp.getName());
    		}
     
    		return convertView;
    	}
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Ok c'était juste pour savoir, car j'ai déjà vu dans certain code un adapter qui étend de baseAdapter et qui va chercher directement la liste dans l'activité (la liste était déclarée en static). Je ne trouve pas ça très propre mais bon...

Discussions similaires

  1. Mise à jours des données d'une Datagrid dans un UserControl ?
    Par mastronic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/07/2011, 12h27
  2. [Struts2] Mise à jour des données sur une liste déroulante
    Par kindersurprise77186 dans le forum Struts 2
    Réponses: 1
    Dernier message: 26/05/2011, 02h30
  3. Réponses: 0
    Dernier message: 29/01/2011, 17h40
  4. Mise à jour des données d'une table avec un SELECT
    Par bouddine dans le forum Langage SQL
    Réponses: 0
    Dernier message: 20/05/2008, 16h36
  5. Mise à jour des données dans une colonne
    Par BZH75 dans le forum SQL
    Réponses: 9
    Dernier message: 09/01/2008, 16h18

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