Ich habe eine While-Schleife verwendet, um die Werte einer SQL-Tabelle in eine ArrayList mit der Cursor-Klasse hinzuzufügen, aber im Moment des Hinzufügens aller Werte die While-Schleife höre auf, Werte zu geben, aber gleichzeitig geht es nicht weiter mit den nächsten Aussagen. Ich habe folgende Bedingung verwendet: Wenn innerhalb der While-Schleife der Cursor einen Nullwert hat, muss er anhalten (c! = Null), er stoppt, fährt aber nicht fort. Ich habe Log.i verwendet, um zu sehen, ob ich Werte nach der While-Schleife erhalte, aber ich bekomme keinen Wert. Hier ist der Code ich verwende:While-Schleife stoppt, aber nicht mit den nächsten Anweisungen fortgesetzt
static ArrayList<String> notes = new ArrayList<>();
static ArrayAdapter arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView);
try{
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("Notes",MODE_PRIVATE, null);
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS notes (name VARCHAR)");
sqLiteDatabase.execSQL("INSERT INTO notes (name) VALUES ('LUIS GA')");
sqLiteDatabase.execSQL("INSERT INTO notes (name) VALUES ('LUIS')");
sqLiteDatabase.execSQL("INSERT INTO notes (name) VALUES ('GA')");
Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM notes", null);
int nameIndex = c.getColumnIndex("name");
notes.add("example note");
c.moveToFirst();
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, notes);
listView.setAdapter(arrayAdapter);
int i = 0;
Log.i("Bucefalo", Integer.toString(i));
while(c != null){
Log.i("Dato",c.getString(nameIndex));
notes.add(c.getString(nameIndex));
c.moveToNext();
i++;
Log.i("Luis", Integer.toString(i));
};
i = 2;
Log.i("Napoleon", Integer.toString(i));
String Hercules = "Hercules";
Log.i("Hercules",Hercules);
}
catch (Exception e){
e.printStackTrace();
}
Die Werte, die ich in der Logcat erhalten Log.i verwenden, sind „Bucefalo“ und „Luis“ (die in der While-Schleife), aber ich weiß nicht empfange den Wert "Napoleon" und "Hercules", Warum? Wie kann ich das beheben? Danke
'' Bucefalo'and Luis' verwenden? nicht 'Dato'? – jhamon
Entfernen Sie ';' am Ende der while-Schleife nach '}'. – Ravikumar
@Ravikumar Das wäre wichtig, wenn das ";" würde direkt nach der while (condition) folgen ... aber nach dem ** block ** ist es egal. – GhostCat