Я использую ViewPager, ViewPager Adapter и фрагмент для отображения подробностей списка разделов.
Скриншот списка разделов
Что мне нужно, так это то, что при нажатии на значок звездочки на подробном экране раздела этот конкретный раздел будет добавлен в закладки, а значение столбца закладки в таблице также будет обновлено до 1.
Подробный экран
Мне удалось реализовать эту функцию, но проблема заключается в нажатии на значок звездочки, при котором разделы меняются местами. Например: если я нахожусь в разделе № 4, то при закладке этого раздела открывается 1-й раздел.
Я использую Живые данные и ViewModels для реализации базы данных Room.
Это код, который я использую для обновления значения закладки в базе данных:
private void updateBookmarkStatus(int id,String chapterNo,String sectionNo,String sectionTitle,String sectionDetail,int bookmarkStatus){
final IpcSection ipcSectionBookmarkStatus = new IpcSection(id,chapterNo,sectionNo,sectionTitle,sectionDetail,bookmarkStatus);
AppExecutors.getInstance().diskIO().execute(new Runnable() {
@Override
public void run() {
mDb.ipcSectionDao().updateBookmarkStatus(ipcSectionBookmarkStatus);
}
});
}
Вот как я реализую onClickListener на значке закладки:
bookmarkedImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(ipcSection.getBookmarkStatus() == 1){
bookmarkedImageView.setImageResource(R.drawable.outline_grade_black_36);
ipcSection.setBookmarkStatus(0);
updateBookmarkStatus(id,chapterNo,sectionNo,sectionTitle,sectionDetail,0);
}else if(ipcSection.getBookmarkStatus() == 0){
bookmarkedImageView.setImageResource(R.drawable.colored_baseline_star_border_black_36);
ipcSection.setBookmarkStatus(1);
updateBookmarkStatus(id,chapterNo,sectionNo,sectionTitle,sectionDetail,1);
}
}
});