首页 > 解决方案 > 未显示实时数据(Android Studio)

问题描述

我试图运行代码

LiveData<ArrayList<TodoModel>> liveData = todoTable.getAllTodos(db);
    todoTable.getAllTodos(db).observe(this, new Observer<ArrayList<TodoModel>>() {
        @Override
        public void onChanged(ArrayList<TodoModel> todoModels) {
            todoList.clear();
            todoList.addAll(todoModels);
            todoAdapter.notifyDataSetChanged();
        }
    });

这是 getAllTodos 方法

public MutableLiveData<ArrayList<TodoModel>> getAllTodos(SQLiteDatabase db) {
    MutableLiveData<ArrayList<TodoModel>> liveTodos = new MutableLiveData<>();
    ArrayList<TodoModel> todos = new ArrayList<>();
            Cursor cursor = db.query(TABLE_NAME,
                    new String[]{columns.id, columns.title, columns.task, columns.category, columns.date, columns.time},
                    null, null, null,
                    null, null);
            while (cursor.moveToNext()) {
                TodoModel todo = new TodoModel(cursor.getString(1), cursor.getString(2),
                        cursor.getString(3), cursor.getLong(4), cursor.getLong(5));
                todos.add(todo);
            }
     liveTodos.setValue(todos);
    return liveTodos;
}

每当 ArrayList 待办事项发生更改时,不会立即显示更改。但是在重新启动应用程序后,会显示新的 TodoModel。

标签: androiddatabaseandroid-livedata

解决方案


推荐阅读