Convertir Android Curseur à la liste de tableaux de tableaux
J'essaie de convertir mon Curseur de données à une liste de tableaux. Mais à la fin de toutes les données dans la liste de tableaux est écrasé à la dernière ligne. Que dois-je faire de mal?
Cursor c = myDbHelper.getLvl1Cata();
String[] data = new String[3];
c.moveToFirst();
while(!c.isAfterLast()) {
data[0] = Integer.toString(c.getInt(0));
data[1] = c.getString(1);
data[2] = Integer.toString(c.getInt(2));
Log.e("cc", data[1]);
catalogueData.add(data);
c.moveToNext();
}
OriginalL'auteur Luciano | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Essayer cette
data
est un tableau de chaînes de caractères. Dans le code d'origine, vous avez ajouté la même matrice pour votrecatalogueData
structure à plusieurs reprises. Vous avez modifié la valeur du contenu du tableau à chaque fois, mais c'était toujours le même objet array. Si vous avez fini aveccatalogueData
la tenue de plusieurs références à un seul tableau, et que le tableau ne pouvez avoir qu'une seule valeur pourdata[0]
: la dernière chose que vous définissez.Cette réponse résout que par l'utilisation d'un nouveau tableau différent pour chaque ligne du curseur.
vous devez me dire quelle est l'erreur, sinon je ne peux pas vous aider.
Est-il possible de lire le curseur et de les stocker dans le tableau de la liste en une seule fois. Si je ne veux pas exécuter la boucle ?
Pas de. Le curseur est juste un pointeur vers les données et vous avez besoin de le déplacer par vous-même. Donc, la boucle est la seule chance.
Merci @WarrenFaith pour la livraison rapide ..
OriginalL'auteur WarrenFaith
Essayez ceci:
OriginalL'auteur Disha
Mettre
String[] data = new String[3];
dans la boucle while. Vous êtes à l'écrasement de l'objet tableau à chaque itération.Pouvez-vous préciser ce que vous entendez à propos de la création d'un nouvel objet dans une boucle? Votre réponse aussi crée un nouvel objet dans une boucle, bien que vous ne vous séparer de la déclaration de la variable à partir de la création de l'objet.
Sa réponse serait d'effectuer exactement la même que la mienne. Il n'a pas d'importance où la déclaration est faite. Si vous souhaitez enregistrer une collection de Tableaux, vous devez créer une nouvelle série de Tableaux à chaque itération ou d'autre de la précédente, on vient de remplacer la dernière série.
Sinon, si vous étiez juste jeter la matrice de distance à chaque itération, alors oui, c'est vrai. Vous souhaitez créer l'objet en dehors de la boucle.
OriginalL'auteur DeeV