Как решить проблему переключения между фрагментами ViewPager при обновлении записи в базе данных комнаты - PullRequest
0 голосов
/ 30 октября 2018

Я использую 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);
            }

        }
    });
...