Я изучаю MVVM с привязкой данных, и у меня есть проблема с нулевыми объектами в моем TaskViewModel. Я создал два конструктора, и один из них пуст, но у меня нет значения в объекте Task. Когда у меня был только один конструктор в viewmodel, он сделал ошибку с экземпляром viewmodel. Что я делаю не так?
Если вы хотите больше кода, пожалуйста, дайте мне знать.
TaskViewModel
public class TaskViewModel extends ViewModel {
private TaskRepository mTaskRepository;
private LiveData<List<Task>> taskMutableLiveData;
private String TAG = "TaskViewModel = ";
private Context context;
public final ObservableField<String> description = new ObservableField<>();
public final ObservableField<String> date = new ObservableField<>();
public final ObservableField<String> time = new ObservableField<>();
public TaskViewModel(TaskRepository taskRepository) {
mTaskRepository = taskRepository;
}
public TaskViewModel() {
}
public void insert() {
addTask(description.get(), date.get(), time.get());
Log.d(TAG, "DATA " + description + " / " + date + " / " + time);
}
public void addTask(String description, String date, String time) {
Task addTask = new Task(description, date, time);
mTaskRepository.insert(addTask);
}
}
TaskRepository
public class TaskRepository {
private TaskDao taskDao;
private LiveData<List<Task>> allTasks;
public TaskRepository(Application application) {
TaskDatabase database = TaskDatabase.getInstance(application);
taskDao = database.taskDao();
allTasks = taskDao.getAllTasks();
}
public void insert(Task task) {
new InsertTaskAsyncTask(taskDao).execute(task);
}
public void update(Task task) {
new UpdateTaskAsyncTask(taskDao).execute(task);
}
public void delete(Task task) {
new DeleteTaskAsyncTask(taskDao).execute(task);
}
public LiveData<List<Task>> getAllTasks() {
return allTasks;
}
private static class InsertTaskAsyncTask extends AsyncTask<Task, Void, Void>
{
private TaskDao taskDao;
private InsertTaskAsyncTask(TaskDao taskDao) {
this.taskDao = taskDao;
}
@Override
protected Void doInBackground(Task... tasks) {
taskDao.insert(tasks[0]);
return null;
}
}
private static class DeleteTaskAsyncTask extends AsyncTask<Task, Void, Void>
{
private TaskDao taskDao;
private DeleteTaskAsyncTask(TaskDao taskDao) {
this.taskDao = taskDao;
}
@Override
protected Void doInBackground(Task... tasks) {
taskDao.delete(tasks[0]);
return null;
}
}
private static class UpdateTaskAsyncTask extends AsyncTask<Task, Void, Void>
{
private TaskDao taskDao;
private UpdateTaskAsyncTask(TaskDao taskDao) {
this.taskDao = taskDao;
}
@Override
protected Void doInBackground(Task... tasks) {
taskDao.update(tasks[0]);
return null;
}
}
}