Android boucle do while
Salut, Ce ma deuxième question ici.
J'ai le tableau suivant
|----- | ------- | ------ | ------|
|._id.|..INFO.|.DONE.|.LAST.|
|..1..|...A...|...N..|......|
|..2..|...B...|...Y..|..L...|<--- cursor.moveToPosition((int)_id-1);
|..3..|...C...|...Y..|......|
|..4..|...D...|...Y..|......|
|..5..|...E...|...N..|......|
|..6..|...F...|...N..|......|
|----- | ------- | ------ | ------|
J'utilise le code:
cursor = db.query(TABLE_NAME, new String[]{INFO,DONE,LAST},null,null,null,null,null);
cursor.moveToPosition((int)_id-1);
String Yval = cursor.getString(cursor.getColumnIndex(DONE));
do
{
cursor.moveToNext();
Yval= cursor.getString(cursor.getColumnIndex(DONE));
}
while (Yval=="Y");
s = Yval;
J'ai d'abord pointez le curseur sur la DERNIÈRE ligne j'ai consulté, puis-je faire une boucle pour parcourir les valeurs dans la colonne FAIT, ne pas s'arrêter si il y a du Y dans la ligne de la colonne. Lorsqu'un N apparaît dans la boucle, la boucle doit s'arrêter.
Mais ça ne fonctionne pas.
Yval jamais égale à "Y". De sorte que le curseur n'est un "moveToNext" et puis sort de la boucle, car il n'a pas lu Yval comme un "Y".
(J'ai aussi changé tout entiers. 1 pour N, et 0 pour Y, mais il ne fonctionne toujours pas)
Donc, ce que je fais mal?
OriginalL'auteur Peter James | 2012-07-05
Vous devez vous connecter pour publier un commentaire.
Donc vous devez utiliser
equals()
méthode si vous voulez comparerStrings
Vous faut savoir que:
==
tests de référence pour l'égalité.equals
des tests de valeur de l'égalité.Si vous voulez tester si Yval
String
a Y valeur, de sorte que vous avez à utiliserequals()
méthode.Vous approche ne fonctionne pas car:
Assurez-vous également que votre
Cursor
a valide ligne de sorte que vous devez ajouter à la condition également curseur.moveToNext() doncaussi vous devez traiter
cursor.moveToPosition((int)_id-1)
afin de l'ajouter à la condition.OriginalL'auteur Simon Dorociak
Je recommande de changer un peu les choses:
_id - 1
depuis l'SQLite_id
est un id unique, et non pas la position d'une ligne dans un Curseur.DONE
colonne une fois, il suffit de le stocker dans une variable locale.equals()
et des méthodes similaires.Je veux que mon thread pour continuer l'exécution de son service tout en un partage de préférence est faux. Comment puis-je y parvenir? stackoverflow.com/questions/35235759/...
OriginalL'auteur Sam