Null для глобального объекта в viewmodel - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу передать идентификатор из метода onItemClick в метод editTask с помощью глобального объекта Task mTask, но когда я хочу установить идентификатор для mTask.setId (item.getId ());в onItemClick я всегда получаю нулевое значение ... Если я устанавливаю ID на: ID = item.getId ();Это хорошо.В чем может быть проблема или, может быть, вы знаете лучшее решение для передачи данных между методами в viewmodel?

ViewModel:

public class MainViewModel extends AndroidViewModel implements RecyclerViewAdapter.OnItemClickListener {

private TaskRepository taskRepository;
private LiveData<List<Task>> allTasks;
public final ObservableField<String> description = new ObservableField<>();
public final ObservableField<String> date = new ObservableField<>();
public final ObservableField<String> time = new ObservableField<>();
private String TAG;
private int ID;
private Task mTask;


public MainViewModel(@NonNull Application application) {
    super(application);
    taskRepository = new TaskRepository(application);
    allTasks = taskRepository.getAllTasks();
}

public LiveData<List<Task>> getAllTasks() {
    return allTasks;
}

public void deleteTask(Task task) {
    taskRepository.delete(task);
}

public void getDataToEdit() {
    editTask(description.get(), date.get(), time.get());
}

public void editTask(String description, String date, String time) {
    Task task = new Task(description, date, time);
    task.setId(ID);
    taskRepository.update(task);

    Log.d(TAG, "MVM editTask " + task.getId());

}

@Override
public void onItemClick(View view, Task item) {
    Log.d(TAG, "MVM " + item.getDescription() + " / " + item.getDate() + " / " + item.getTime() + " / " + mTask);
    description.set(item.getDescription());
    date.set(item.getDate());
    time.set(item.getTime());
    ID = item.getId();
    mTask.setId(item.getId());

    if (mTask != null) {
        mTask.setId(item.getId());
    }
}
...