private List<QuranRow> getSortedRows(List<Bookmark> bookmarks) { List<QuranRow> rows = new ArrayList<>(bookmarks.size()); List<Bookmark> ayahBookmarks = new ArrayList<>(); // add the page bookmarks directly, save ayah bookmarks for later for (int i = 0, bookmarksSize = bookmarks.size(); i < bookmarksSize; i++) { Bookmark bookmark = bookmarks.get(i); if (bookmark.isPageBookmark()) { rows.add(QuranRowFactory.fromBookmark(mAppContext, bookmark)); } else { ayahBookmarks.add(bookmark); } } // add page bookmarks header if needed if (rows.size() > 0) { rows.add(0, QuranRowFactory.fromPageBookmarksHeader(mAppContext)); } // add ayah bookmarks if any if (ayahBookmarks.size() > 0) { rows.add(QuranRowFactory.fromAyahBookmarksHeader(mAppContext)); for (int i = 0, ayahBookmarksSize = ayahBookmarks.size(); i < ayahBookmarksSize; i++) { rows.add(QuranRowFactory.fromBookmark(mAppContext, ayahBookmarks.get(i))); } } return rows; }