2010-05-07 11 views
1

Mon application affiche un ListView avec un bouton qui permet à l'utilisateur d'ajouter un élément. Lorsque l'utilisateur clique sur ce bouton, une autre activité est lancée pour permettre à l'utilisateur de remplir le nouvel élément. Lorsque l'ajout est terminé, nous revenons à l'activité précédente avec le ListView et je voudrais faire défiler le nouvel élément. Notez que cet élément n'est pas nécessairement à la fin de ListView, car il y a un "ordre par" lorsque je récupère les données de la base de données.Comment faire défiler jusqu'au nouvel élément ajouté dans un ListView

Je sais que j'ai besoin de la position du curseur du nouvel élément pour faire apparaître le ListView, mais la seule information que j'ai sur cet élément est son id, alors comment convertir cet identifiant en position curseur? Dois-je faire une boucle sur le curseur pour trouver la position?

Merci à l'avance

+1

Avez-vous votre article ou une vue avec un nouvel article? –

+0

pas sûr de comprendre votre question, l'activité qui ajoute le nouvel élément renvoie l'ID de base de données de l'article (colonne id), puis quand je reviens à la liste, je remplis la liste avec une requête de la base de données, mais je ne Je sais comment faire défiler le nouvel élément avec seulement son identifiant de base de données. – tbruyelle

Répondre

2

Si j'avais ce droit votre activité retourne les nouveaux éléments et que vous allez chercher à nouveau toutes les entrées de la base de données et la seule information que vous avez est l'identifiant des éléments. Si tel est le cas, je pense que la seule option est d'itérer tous les éléments de l'adaptateur et de trouver le bon. Mais dans ce cas, il est peut-être préférable d'utiliser ArrayAdapter. Lorsque la seconde activité renvoie les nouveaux identifiants, récupérez-les uniquement à partir de DB puis ajoutez-les à l'adaptateur. Vous pouvez remplacer la méthode add (T) en implémentant le tri par insertion, de sorte que votre adaptateur soit trié et que vous puissiez stocker l'index des éléments nouvellement insérés, puis faites défiler jusqu'à cette position.

+0

Oui vous avez raison, j'ai finalement choisi d'itérer le curseur pour trouver la position de l'élément, comme vous le proposez ici. Puis j'appelle 'getListView(). SetSelection (position)'. Merci – tbruyelle