PhilFlash

Flex 4.5 Mobile - Sauver/Restaurer la position dans une List

Traduire/Translate (by Google) : English - Espagnol - Deutsch

Obtenir les sources listSaveRestorePosition.fxp (projet Flex 4.5)

En Flex 4.5, vous pouvez utiliser des listes avec une vue Détail pour afficher la vue détaillée d'un élément.

Mais, lorsque vous revenez à la liste, vous allez "perdre" l'élément sélectionné.

En effet, dans Flex mobile, une View est construite à chaque affichage de la vue. Ce mécanisme par défaut repositionne donc la liste sur les premiers éléments visibles de la liste (et pas sur l'élément que vous aviez préalablement sélectionné).

Ce problème est connu. Par exemple, sur le blog de Flexponential, vous trouverez un article permettant de restaurer la position des barres de scroll. Mais, si vous modifier le mode landscape/portrait de votre téléphone/tablette, ceci ne fonctionne plus.

Voici une méthode qui va permettre de visualiser l'élément sélectionné en première position.

La méthode s'inspire de l'article de Flexponential. Lors de la création d'une nouvelle vue, la vue précédente est détruite. Cependant, la propriété data n'est pas détruite. Elle va être utilisée pour sauver des informations.

On va donc utiliser cette propriété data pour sauver l'indice de l'élément sélectionné avec la méthode viewDeactivate. Lors du retour à la liste, on va utiliser la méthode creationComplete de la vue pour restaurer l'élément sélectionné.

On pourrait utiliser ensureIndexIsVisible pour rendre visible un élément. Mais généralement, celui-ci se trouve en fin de liste. Le code suivant positionne l'élément sélectionné au début de la liste.

Ce code fonctionne pour des listes verticales.


Warning: Undefined array key "KEYWORDS" in /home/inway/www/philflash/iwgeshi/geshi.php on line 2020

Fatal error: Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, null given in /home/inway/www/philflash/iwgeshi/geshi.php:2020 Stack trace: #0 /home/inway/www/philflash/iwgeshi/geshi.php(2020): array_keys(NULL) #1 /home/inway/www/philflash/iwgeshi/geshi.php(2162): GeSHi->build_parse_cache() #2 /home/inway/www/philflash/flex/listsaveposition/index.php(72): GeSHi->parse_code() #3 {main} thrown in /home/inway/www/philflash/iwgeshi/geshi.php on line 2020