Я пытаюсь обновить ArrayList, чтобы отобразить его в Listview из моей базы данных SQLite, но список отображается пустым. SQLite отлично работает, поскольку данные отображаются в журналах, но не добавляются в список.ArrayList не обновляется
Одна вещь, которую я хочу добавить, это то, что я также связал этот список с Parse для получения данных в Интернете и сохранил его в моей базе данных для автономной доступности.
Список обновляется отлично, когда он извлекает данные из Parse.
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();
}
}
Вот вызов метода для данных
@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
}
Большое спасибо. Это решило мои проблемы. Но почему он не назвал мой метод должным образом? –
Я думаю, что это потому, что 'onCreate()'. Пользовательский интерфейс не создавался в то время, когда вы хотели обновить интерфейс. Поэтому сначала создайте пользовательский интерфейс, затем извлеките данные (асинхронно, чтобы не было замораживания -> вы можете показать диалоговое окно загрузки или что-то в этом роде), а затем обновить UI;) – beeb