Проблема с сохранением данных в базу Room

На главной активности находится RecyclerView, где будут отображаться все данные из базы. При нажатии на кнопку водится дата с помощью DatePickerDialog, затем переход на следующую активность, где вводятся два значения: координаты x и y. В меню сверху есть кнопки "сохранить" и "назад". У введенных значений автоматически сохраняется та дата, которую пользователь ввел вначале. При нажатии на кнопку "сохранить" мне хотелось бы, чтобы эти три значения сохранялись и выводились в RecyclerView. И сколько раз пользователь нажмет на "сохранить", чтобы столько элементов добавились в базу. А при нажатии на кнопку "назад", пользователь просто переходит на главную активность и дата обнуляется. Однако, в итоге сколько раз не нажимай на "сохранить", сохраняется только одно последнее значение. Подскажите, пожалуйста, как можно исправить?

Класс MainActivity:

public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
public static final int ADD_NOTE_REQUEST = 1;
public static final String CURRENT_DATE =
        "com.example.architectureexample.CURRENT_DATE";

private DataViewModel dataViewModel;
String currentDate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FloatingActionButton btn_add = findViewById(R.id.btn_add);
    btn_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment datePicker = new DatePickerFragment();
            datePicker.show(getSupportFragmentManager(), "DatePicker");
        }
    });

    final DataAdapter adapter = new DataAdapter();

    RecyclerView recyclerView = findViewById(R.id.recycler_view);
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setHasFixedSize(true);

    dataViewModel = new ViewModelProvider(this).get(DataViewModel.class);
    dataViewModel.getAllData().observe(this, new Observer<List<Data>>() {
        @Override
        public void onChanged(List<Data> list) {
            adapter.setData(list);
        }
    });

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            dataViewModel.delete(adapter.getDataAtPosition(viewHolder.getAdapterPosition()));
            Toast.makeText(MainActivity.this, "Deleted successfully!", Toast.LENGTH_SHORT).show();
        }
    }).attachToRecyclerView(recyclerView);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == ADD_NOTE_REQUEST && resultCode == RESULT_OK) {
        String date = data.getStringExtra(AddDataActivity.EXTRA_DATE);
        float xValue = data.getFloatExtra(AddDataActivity.EXTRA_X_VALUE, 1);
        float yValue = data.getFloatExtra(AddDataActivity.EXTRA_Y_VALUE, 1);

        Data newData = new Data(date, xValue, yValue);
        dataViewModel.insert(newData);
        Toast.makeText(this, "Saved successfully!", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(this, "Note wasn't saved", Toast.LENGTH_SHORT).show();
    }
}

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
    currentDate = DateFormat.getDateInstance(DateFormat.DEFAULT).format(c.getTime());

    Intent intent = new Intent(MainActivity.this, AddDataActivity.class);
    intent.putExtra(CURRENT_DATE, currentDate);
    startActivityForResult(intent, ADD_NOTE_REQUEST);
    }
}

Класс AddDataActivity:

public class AddDataActivity extends AppCompatActivity {

public static final String EXTRA_X_VALUE =
        "com.example.architectureexample.EXTRA_X_VALUE";
public static final String EXTRA_DATE =
        "com.example.architectureexample.EXTRA_DATE";
public static final String EXTRA_Y_VALUE =
        "com.example.architectureexample.EXTRA_Y_VALUE";

private EditText et_xValue;
private EditText et_yValue;
private String currentDate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_data_acrivity);

    et_xValue = findViewById(R.id.et_xValue);
    et_yValue = findViewById(R.id.et_yValue);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
    setTitle("Add data");

    Intent data = getIntent();
    currentDate = data.getStringExtra(MainActivity.CURRENT_DATE);
}


private void saveNote() {
    if (et_xValue.getText().length() == 0 || et_yValue.getText().length() == 0 || currentDate == null) {
        Toast.makeText(this, "You must put something in the text field!", Toast.LENGTH_SHORT).show();
        return;
    }
    float xValue = Float.valueOf(et_xValue.getText().toString());
    float yValue = Float.valueOf(et_yValue.getText().toString());

    Intent intent = new Intent();
    intent.putExtra(EXTRA_X_VALUE, xValue);
    intent.putExtra(EXTRA_Y_VALUE, yValue);
    intent.putExtra(EXTRA_DATE, currentDate);

    setResult(RESULT_OK, intent);

    et_xValue.setText("");
    et_yValue.setText("");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.add_data_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.save_data:
            saveNote();
            return true;
        case android.R.id.home:
            Toast.makeText(getApplicationContext(), "Home button pressed", Toast.LENGTH_SHORT).show();
            currentDate = null;
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
}

Ответы (0 шт):