Staggeredgridlayout ведет себя плохо - PullRequest
0 голосов
/ 14 июля 2020

У меня есть функция, с помощью которой пользователи могут добавлять или снимать закладку с элемента. Для этого я поддерживаю два вида ресайклера. когда я снимаю закладку с элемента и нет других элементов, кроме закладок, он не находится наверху. см. изображение ниже. ОБНОВЛЕНИЕ: Но он перемещается вверх, когда я нажимаю кнопку поиска. Потому что тогда клавиатура выскакивает и вид нормальный.

введите описание изображения здесь

Это обработчик закладок.

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();
}

Я не могу определить, в чем проблема. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...