Bonjour, voici un soucis que je rencontre avec mon développement :
Seulement une fois en début de journée
Je développe une application pour le boulot et je suis embêté par un problème, et ce surtout du fait que le bug n'est reproductible que chaque matin au premier allumage, tout le restant de la journée le bug ne survient plus du tout même après avoir supprimé les données de l'app, l'avoir désinstallé ou même après avoir éteint la tablette pendant 3 heures puis la rallumer...
ça ne le fait qu'une seule fois à la toute première exécution de la journée :(
Le bug en question
J'ai un écran avec une ListView de fonctions dites "fonctions principales", je n'en ai qu'une seule dans cette liste : celle d'IDFonction "1".
Elle est affichée grâce à une condition qui n'affiche que les fonctions principales (ID d'un seul chiffre) parmi les 10 retournées par un webservice (1,11,12,13,14,15,16,17,18,19).
Le problème qui survient qu'une seule fois par jour, c'est qu'après avoir sélectionné l’élément "Fonction d'ID 1", je passe bien à l'écran suivant avec l'index 0 (c'est le seul élément de la liste), dont je prends l'ID pour filtrer les "sous-fonctions" à afficher sur l'activité d'après (toutes celles qui commencent par cet ID (1) donc 11,12,13,14,15,16,17,18,19 mais je n'ai que la sous-fonction 19 qui s'affiche.
J'ai débogué tout et je constate qu'après avoir sélectionné la fonction "1", l'application en allant chercher la fonction d'index 0 dans l'arraylist des 10 fonctions du webservice, tombe sur la fonction d'ID 19 d'où son affichage alors que c'est la dernière des 10 et que ça devrait prendre la première, celle qu'on a sélectionné.
Alors, pourquoi ça me fait ça et pourquoi je ne peux plus jamais reproduire ce bug toute la journée, et qu'il faut attendre le lendemain pour que le bug réapparaisse ?
Depuis lors j'ai constaté que le webservice me renvoyait en fait les 20 fonctions dans l'ordre inverse et que du coup celle d'index 0 était la 19 et non la 1 : Du coup affichage de la 19 (seule fonction qui commence par 19).
Mais ça n'explique pas pourquoi le webservice renvoit les fonctions dans l'ordre inverse uniquement une fois par jour au premier lancement de la requête...
Oui, je passe une liste d'objets "Fonction" à mon adaptateur plutôt qu'une liste de String.
public MyAdapter(List<Fonction> list) { this.list = list; setHasStableIds(true); }
Comme cela ça me permet de pouvoir savoir exactement sur quelle fonction j'ai appuyé et en récupérer son ID exact.
Avant j'avais une liste de "Fonction" de laquelle je prenais la "Fonction" d'index choisi et l'adaptateur de la ListView ne connaissait qu'un String du texte affiché (par exemple : "1. Fonction principale") car je lui passais une List<String>.
Je passe directement la liste de "Fonction" à mon adaptateur et le tour est joué.
Mais le webservice continue de me les envoyer dans le désordre le matin même si ça ne pose plus de problème.
A noté qu'il n'y a pas d'ORDER BY donc le problème est peut être déjà au moment de la requête SQL.
Petit soucis avec ce sujet qui reste bloqué en haut...
La seule solution trouvée à l'heure actuelle est de le déterrer en y postant un message pour qu'il puisse ensuite redescendre au fur et à mesure que les autres sujets remontent.
World of Potion | Discord 3D [FR] | Direct Quiz
World of Potion | Discord 3D [FR] | Direct Quiz
World of Potion | Discord 3D [FR] | Direct Quiz
World of Potion | Discord 3D [FR] | Direct Quiz