J'ai une question qui devrait être simple, mais je n'arrive pas à la résoudre.
J'utilise DragSortListView . Je veux donner à chaque élément de la vue de liste une étiquette avec son emplacement d'origine. Lorsque l'utilisateur a fini de réordonner, je veux renvoyer une chaîne avec les identifiants d'origine (comme 2,3,4,1 si l'utilisateur a déplacé le premier élément à la dernière place). Si un élément est supprimé, j'aimerais également connaître l'identifiant d'origine.
Voici mon code.
DragSortListView mainListView = (DragSortListView) findViewById( R.id.list_pages );
String[] names = settings.getString("pages", "Error,error").split(",");
ArrayList<String> list = new ArrayList<String>(Arrays.asList(names));
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.row, list);
mainListView.setAdapter(adapter);
DragSortController controller = new DragSortController(mainListView);
...
J'ai pensé qu'il serait préférable de passer en revue tous les éléments et de leur attribuer des étiquettes avec leurs identifiants d'origine. J'essaie de parcourir les éléments en utilisant quelque chose comme ceci
for (int i = 0; i < mainListView.getCount(); i++)
{
View v = mainListView.getChildAt(i);
TextView tx = (TextView) v.findViewById(R.id.text);
tx.setTag(i);
}
Cependant, cette liste semble être vide, bien que l'adaptateur ait été défini.
Je ne peux pas utiliser un adaptateur de tableau personnalisé, car l'application se bloquerait lorsqu'un élément est déposé ou balayé.
Informations complémentaires : La vue en liste est remplie lorsque les données sont renvoyées par un service utilisant un BroadcastReceiver. Je ne pense pas que cela ait une influence, mais on ne sait jamais.
Ma question :
- Comment puis-je stocker la position d'origine de chaque élément de la liste, afin de pouvoir y accéder ultérieurement ?
Merci d'avance !