Мое приложение представляет собой список имен элементов.При щелчке по одной из них вы переходите к другой операции с более подробной информацией, а также редактируемым текстом и кнопкой для изменения его имени.Когда я возвращаюсь к списку, я хочу, чтобы у него было новое имя, если оно обновлено.Мой метод onCreate имеет этот код, который идеально заполняет его из базы данных (игнорируйте жестко заданный размер, его просто проще отлаживать)
final String DATABASE_NAME = "element_db";
final AppDatabase appDatabase;
appDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, DATABASE_NAME).build();
ListView list = (ListView)findViewById(R.id.listView);
final String[] element = new String[3];
new Thread(new Runnable() {
@Override
public void run() {
List<Element> elements;
elements = appDatabase.elementDao().fetchElements(); // a dao query "select*from"
int size = elements.size();
for (int i = 0; i < size; i++){
element[i] = elements.get(i).getName();
}
}
}) .start();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.activity_list_view, R.id.textView, element);
list.setAdapter(arrayAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(MainActivity.this, itemdetail.class);
i.putExtra("pos", position);
startActivity(i);
}
});
Чтобы получить обновленный список при возврате на этот экран, я скопировал приведенный выше кодв метод onRestart, но теперь база данных ничего не возвращает.Если я просто установлю для массива, который входит в адаптер, {"a", "a", "a"}, список заполнится нормально.Любые идеи, почему база данных работает на Create, но не onRestart?