Ich versuche die ArrayList zu aktualisieren, um sie in der ListView aus meiner SQLite-Datenbank anzuzeigen, aber die Liste ist leer. Die SQLite funktioniert einwandfrei, da die Daten in den Protokollen angezeigt werden, aber nicht in der Liste hinzugefügt werden.ArrayList wird nicht aktualisiert
Eine Sache, die ich hinzufügen möchte, ist, dass ich diese Liste auch mit Parse verbunden habe, um Daten online zu erhalten und es in meiner Datenbank für die Offline-Verfügbarkeit zu speichern.
Die Liste wird aktualisiert, wenn Daten von Parse abgerufen werden.
public void listUpdater() {
Cursor c = myDB.rawQuery("SELECT * FROM user", null);
int titleIndex = c.getColumnIndex("title");
titles.clear();
if (c.moveToFirst()){
do {
Log.i("RESULT: ",c.getString(titleIndex));
titles.add(c.getString(titleIndex));
} while (c.moveToNext());
adapter.notifyDataSetChanged();
}
}
Hier ist der Aufruf der Methode für die Daten
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logged_in);
myDB = openOrCreateDatabase("Users", MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS user(title VARCHAR)");
adapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, titles);
listView = (ListView) findViewById(R.id.listUsers);
listView.setAdapter(adapter);
listUpdater();
titles.clear();
// After this the list is updated from Parse
}
Vielen Dank hilft. Das hat meine Probleme gelöst. Aber wieso hat es meine Methode nicht richtig genannt? –
Ich denke es liegt an der 'onCreate()'. Die Benutzeroberfläche wurde zu dem Zeitpunkt, zu dem Sie die Benutzeroberfläche aktualisieren wollten, nicht erstellt. Also erst UI erstellen, dann Daten holen (async, so dass es kein Einfrieren gibt -> Ladedialog oder ähnliches anzeigen), dann UI aktualisieren;) – beeb