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 :

Sauvegarder un tableau


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut Sauvegarder un tableau
    Bonjour,

    Lors de la rotation écran, mon tableau ce remets à zéro.
    Comment sauvegarder mon tableau pour que si on change la rotation de l'écran mon tableau garde c'est vrai valeur.

    Merci d'avance
    Cdlt,

  2. #2
    Membre actif
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Points : 204
    Points
    204
    Par défaut
    Salut,

    Un peu plus de precisions,et pk pas un peu de ton code(sait on jamais) seraient les bienvenus.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    J'ai une listview qui affiche des infos venant d'un fichier XML dans des tableLayout.
    En cliquant sur une tableLayout, je rend visible ou invisible des textview et j'inverse la valeur booléan dans mon tableau.
    J'ai donc un tableau de booléan mExpanded de (0 à tableLayout.length) qui stocke true ou false.
    Si valeur tableau = true alors le textview est visible.
    Si valeur tableau = false alors le textview est invisible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private final boolean[]   	mExpanded;
    public FichierLogAdapter(Context context, ArrayList<FichierLog> items) {
            super(context, 0, items);
            mContext = context;
            mExpanded = new boolean[items.size()];
            for (int i = 0; i < mExpanded.length; i++)
                mExpanded[i] = false;
    }
    public void toggle(int position) {
            mExpanded[position] = !mExpanded[position];
            notifyDataSetChanged();
    }
    Mon problème est que si on tourne le téléphone (la rotation écran change).
    Toutes les valeurs de mon tableau passe à false même les valeur qui sont à true.

    Il faudrait que je stocké les valeurs de mon tableau à l'intent T pour pouvoir le réaffiché en cas de changement de rotation écran.

    j'espère être assez claire.

    Cdlt,

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui c'est très clair....
    Il me semble que ce sont les informations du tableau qui devraient tenir un "boolean".
    Ou sinon, utiliser un SparseBooleanArray

    Bon mais sinon, il faut sauvegarder l'état de l'adapter dans le onDestroy et le restaurer dans le onCreate.
    Il y a un très bon outil pour cela: le callback de l'activité: onSaveInstanceState
    Et restaurer dans onCreate (ou encore dans onRestoreInstanceState)

    Je te propose de lire en détail la vie d'une activité pour bien comprendre le fonctionnement de celle-ci.
    (par défaut le retournement de l'appareil, recrée une nouvelle activité, dans le bon sens).



    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    J'ai beau tourner le problème dans tous les sens, rien a faire.
    C'est surement très simple mais je n'y arrive pas.

    Il faut sauvegarder l'état de l'adapter et le restaurer dans le onCreate.

    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
    protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_fichier_log);
    		
    		getActionBar().setSubtitle(Html.fromHtml("<font color=\"yellow\">" + getString(R.string.SubTitleFichierLog) + "</font>"));
    		
    		lvListe = (ListView)findViewById(R.id.lvListe);
    	    mTexteFichierLog = loadTexteFichierLog();
    		
    		final FichierLogAdapter adapter = new FichierLogAdapter(this, mTexteFichierLog);
            lvListe.setAdapter(adapter);
            
            lvListe.setOnItemClickListener(new OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				adapter.toggle(position);
    			}
    		});
            
            if (savedInstanceState != null) {
            	//for (int i = 0; i < FichierLogAdapter.mExpanded.length; i++) {
            		//savedInstanceState.getBooleanArray(mExpanded1);
            		//Toast.makeText(this, savedInstanceState .getString(mExpanded1), Toast.LENGTH_LONG).show();
            	//}
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void onSaveInstanceState(Bundle outState) {
    		super.onSaveInstanceState(outState);
    		//for (int i = 0; i < FichierLogAdapter.mExpanded.length; i++) {
    			//outState.putBooleanArray(mExpanded1, FichierLogAdapter.mExpanded);
    		//}
    }
    Merci d'avance, un bout de code serait le bien venu..

    Cdlt,

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ben c'est presque bon....
    C'est un truc genre:
    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
     
    private static final String  EXTRA_DATA_STATE = "ExtraData";
    boolean[] extraData;
     
     
    public void onCreate(Bundle savedState)
    {
        ....
        if (savedState != null)
            this.extraData = savedState.getBooleanArray(EXTRA_DATA_STATE);
        if (this.extraData == null) {
            // initialisation "simple"
        }
    }
     
     
    public void onSaveInstanceState(Bundle savedState)
    {
         if (this.extraData != null)
             savedState.putBooleanArray(EXTRA_DATA_STATE,this.extraData);
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut
    Bonjour, Merci nicroman,

    J'ai réussi avec ce code (juste pour l'info du tutu).
    1°) Dans le onCreate(Bundle savedInstanceState)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            final RessourcesAdapter adapter = new RessourcesAdapter(this, mTexteRessources);                  
            if (savedInstanceState != null) {        
                 RessourcesAdapter.mExpanded = savedInstanceState.getBooleanArray(Consts.EXTRA_EXPANDED);
            }                
            mListview.setAdapter(adapter);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void onSaveInstanceState(Bundle outState){
            super.onSaveInstanceState(outState);
            outState.putBooleanArray(Consts.EXTRA_EXPANDED, RessourcesAdapter.mExpanded);
    }
    Cdlt,

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

Discussions similaires

  1. sauvegarder un tableau dans un fichier
    Par jonezy0621 dans le forum Débuter
    Réponses: 9
    Dernier message: 14/03/2009, 01h37
  2. Sauvegarder un tableau
    Par El-Diablo- dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/10/2007, 11h25
  3. Réponses: 11
    Dernier message: 18/04/2007, 17h39
  4. Comment sauvegarder un tableau
    Par Aurore_atmo dans le forum MATLAB
    Réponses: 5
    Dernier message: 13/07/2006, 11h17
  5. Sauvegarder un tableau 2D en BMP
    Par homeostasie dans le forum MFC
    Réponses: 12
    Dernier message: 17/05/2005, 10h36

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