У меня есть функция, с помощью которой пользователи могут добавлять или снимать закладку с элемента. Для этого я поддерживаю два вида ресайклера. когда я снимаю закладку с элемента и нет других элементов, кроме закладок, он не находится наверху. см. изображение ниже. ОБНОВЛЕНИЕ: Но он перемещается вверх, когда я нажимаю кнопку поиска. Потому что тогда клавиатура выскакивает и вид нормальный.
введите описание изображения здесь
Это обработчик закладок.
private void bookmarkHandler() {
@SuppressLint("StaticFieldLeak")
class BookmarkNotesTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
if(selectedNotes.size() > 0){
List<Long> noteIds = new ArrayList<>();
if(bookmarkHandlerIVTag.equals(Constants.BOOKMARK)){
for (NoteWithData note: notesToBookmarkInSelectedNotes){
noteIds.add(note.note.getNoteId());
}
MediaLinesDatabase.getMediaLinesDatabase(getContext()).noteDao().bookmarkNotesWithId(noteIds);
}
else {
for (NoteWithData note: notesToUnBookmarkInSelectedNotes){
noteIds.add(note.note.getNoteId());
}
MediaLinesDatabase.getMediaLinesDatabase(getContext()).noteDao().unBookmarkNotesWithId(noteIds);
}
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
cancelMultiSelectIV.performClick();
getNotes();
collapseSearchView();
}
}
new BookmarkNotesTask().execute();
}
Это моя задача получения заметок.
private void getNotes(){
@SuppressLint("StaticFieldLeak")
class GetNotesTask extends AsyncTask<Void, Void, List<NoteWithData>>{
@Override
protected List<NoteWithData> doInBackground(Void... voids) {
if(notesType == Constants.IS_ACTIVE){
return MediaLinesDatabase.getMediaLinesDatabase(getActivity().getApplicationContext()).noteDao().getActiveNotesWithData();
}
else {
return MediaLinesDatabase.getMediaLinesDatabase(getActivity().getApplicationContext()).noteDao().getArchiveNotesWithData();
}
}
@Override
protected void onPostExecute(List<NoteWithData> notes) {
super.onPostExecute(notes);
notesRecyclerView.setAdapter(null);
bookmarkedNotesRecyclerView.setAdapter(null);
notesList = new ArrayList<>();
notesAdapter = new NotesAdapter(notesList, HomeFragment.this);
notesRecyclerView.setAdapter(notesAdapter);
bookmarkedNotesList = new ArrayList<>();
bookmarkedNotesAdapter = new NotesAdapter(bookmarkedNotesList, HomeFragment.this);
bookmarkedNotesRecyclerView.setAdapter(bookmarkedNotesAdapter);
if(notesList.size() == 0){
for (NoteWithData noteWithData: notes){
if(noteWithData.note.getIsBookmarked() == Constants.IS_BOOKMARKED){
bookmarkedNotesList.add(noteWithData);
}
else {
notesList.add(noteWithData);
}
}
//notesList.addAll(notes);
intactNotesList.clear();
intactNotesList.addAll(0,notes);
intactOtherNotesList.clear();
intactOtherNotesList.addAll(0,notesList);
intactBookmarkedNotesList.clear();
intactBookmarkedNotesList.addAll(0,bookmarkedNotesList);
notesAdapter.setIntactDataSource(intactOtherNotesList);
notesAdapter.notifyDataSetChanged();
bookmarkedNotesAdapter.setIntactDataSource(intactBookmarkedNotesList);
bookmarkedNotesAdapter.notifyDataSetChanged();
if(notesList.size() == 0){
notesRecyclerView.setVisibility(View.GONE);
othersTV.setVisibility(View.GONE);
}
else {
notesRecyclerView.setVisibility(View.VISIBLE);
othersTV.setVisibility(View.VISIBLE);
}
if(bookmarkedNotesList.size() == 0){
bookmarkedNotesRecyclerView.setVisibility(View.GONE);
bookmarksTV.setVisibility(View.GONE);
othersTV.setVisibility(View.GONE);
}
else {
bookmarkedNotesRecyclerView.setVisibility(View.VISIBLE);
bookmarksTV.setVisibility(View.VISIBLE);
}
}
}
}
new GetNotesTask().execute();
}
Я не могу определить, в чем проблема. Заранее спасибо.