База данных студии Android - не возвращает значения в методе onRestart () - PullRequest
0 голосов
/ 12 октября 2018

Мое приложение представляет собой список имен элементов.При щелчке по одной из них вы переходите к другой операции с более подробной информацией, а также редактируемым текстом и кнопкой для изменения его имени.Когда я возвращаюсь к списку, я хочу, чтобы у него было новое имя, если оно обновлено.Мой метод 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?

1 Ответ

0 голосов
/ 12 октября 2018

Я думаю, что вы можете использовать ViewModel и livingata для наблюдения за любым изменением базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...