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).
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); }
Partager