У меня есть TabLayout
с двумя вкладками, чьим родителем является другой Fragment
, вложенный в MainActivity
. Эти две вкладки содержат RecyclerView
каждая, в которой находятся элементы с одинаковым расположением. На первой вкладке перечислены все журналы, а на второй - только закладки.
Я использую общий класс ViewModel
и Adapter
, чтобы обновить sh содержимое обеих вкладок. Однако проблема в том, что, когда я нажимаю флажок «Закладка» для определенного элемента, объект даты изменяется автоматически и принимает совершенно случайные значения. Однако этот конкретный элемент добавляется на вкладку Bookmarks
, а также обновляется поле bookmark
соответствующей строки, поскольку именно оно отвечает за добавление или удаление элементов на вкладке Bookmarks
.
Такое случайное поведение не возникает при использовании класса ViewModel
, который я создал только для первой (Journal
) вкладки, и в этом случае поле закладки также обновляется должным образом.
Это то, что я выполняется обновление журнала (добавление или удаление закладки)
Journal updatedJournal = new Journal(journal.getTitle(), journal.getDescription(), journal.getDate(), bookmark, 0);
// Toast.makeText(getContext(), journal.getDate().toString(), Toast.LENGTH_SHORT).show();
updatedJournal.setId(journal.getId());
journalViewModel.update(updatedJournal);
, где journal
- объект Journal
, получающий событие щелчка. Toast сообщает дату перед обновлением, что означает, что journal
объект не тот, который виноват.
Я не уверен, что это происходит из-за:
- Использование одинаковые
ViewModel
или Adapter
одновременно для двух разных фрагментов. - Создание нескольких объектов LiveData внутри
ViewModel
, а также Repository
конструкторов.
ViewModel
constructor
public JournalViewModel(@NonNull Application application) {
super(application);
repository = new JournalRepository(application);
journals = repository.getAllJournals();
bookmarkedJournals = repository.getBookmarkedJournals();
}
Repository
constructor
public JournalRepository(Application application) {
JournalDatabase journalDatabase = JournalDatabase.getInstance(application);
journalDao = journalDatabase.journalDao();
allJournals = journalDao.getJournalsByDate();
bookmarkedJournals = journalDao.getBookmarkedJournals();
}
Или есть что-то, что я пропускаю или делаю неправильно.
Заранее спасибо.