Comment faire pour sauvegarder et restaurer ListView position dans Android
J'ai tabView, l'affichage de la liste dans chaque onglet. Quand j'ai faites défiler jusqu'à un onglet, passer à un autre onglet et revenir à l'onglet précédent, la position est retourné vers le haut au lieu de l'affichage précédent défilé position. Comment puis-je y parvenir ? Besoin de savoir comment puis-je utiliser onSaveInstanceState & onRestoreInstanceState pour enregistrer la position et de l'utilisation de la position enregistrée dans l'affichage de la précédente défilement position.
Merci d'Avance.
Merci à tous pour votre réponse. J'ai essayé toutes les solutions, mais a couru dans d'autres questions.
Fondamentalement, le problème, je suis confronté est comme suit.
J'ai une listview comme ma première activité lorsque je lance mon application.
Quand je clique sur l'élément de la liste, il se lance sur l'onglet activité qui contient 3 onglets.
Tous les 3 onglets utilise la même activité appelée ListActivity. Mais 3 onglets contient des données différentes.
Ma question est comment faire pour conserver la position de la liste lorsque je basculer entre les onglets. Avec les solutions ci-dessus à condition, lorsque je change la position dans un onglet, il affecte les onglets restants ainsi. Par exemple, si je suis à la position 6 dans le premier onglet, cette position sera définie pour les deuxième et troisième onglet ainsi que je suis en utilisant le même ListActivity pour tous les 3 onglets. Je ne suis pas autorisé à partager le code. Donc, avoir à taper le problème de cette longue. Aussi le nombre d'onglets créés sont dynamiques. Il peut être de 3 ou 4 ou 5. Mais tous les onglets à utiliser 1 ListActivity.
Quelqu'un peut-il me donner un exemple de la façon d'atteindre cet objectif.
1. Seul ListActivity utilisé dans de multiples onglets.
2. En conservant la position du curseur dans les onglets sans affecter les autres onglets.
Votre solution fournie est apprécié.
Merci à l'avance.
- Il semble que vous êtes en train de créer un nouveau contrôle ListView ou en quelque sorte de mettre à jour le contenu chaque fois que vous passez d'un onglet. Pourriez-vous veuillez poster votre code?
- Veuillez voir le post suivant, qui peut vous aider: stackoverflow.com/questions/3014089/...
Vous devez vous connecter pour publier un commentaire.
Ne pas appeler setAdapter() à nouveau sur la liste. Faire quelque chose comme cela.
Si vous avez besoin de mettre à jour votre ListView appel notifyDataSetChanged() sur la carte.
Pour obtenir la position actuelle de votre Liste, vous pouvez appeler
Puis une fois que vous revenez à l'onglet avec cette Liste, vous pouvez appeler
Il dépendra de la façon dont votre code est écrit pour savoir si le poste devra être ajouté à la savedInstanceState, ou cependant.
Remplacer
onSaveInstanceState
pour enregistrer la position, et de définir la position de retour dansonRestoreInstanceState
. Le Bundle est un peu comme une table de hachage, (pseudo-code):Dans
onSaveInstanceState
:Puis dans
onRestoreInstanceState
:Dans
listView.setOnItemClickListener
, utilisez lesaveLastPosition
méthode. Et aprèslistview.setAdapter(adapter);
appeler legetLastPosition
méthode