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,
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,
Salut,
Un peu plus de precisions,et pk pas un peu de ton code(sait on jamais) seraient les bienvenus.
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.
Mon problème est que si on tourne le téléphone (la rotation écran change).
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(); }
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,
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
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(); //} } }Merci d'avance, un bout de code serait le bien venu..
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); //} }
Cdlt,
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
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);Cdlt,
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); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager