ListAdapter дублирует элемент после его изменения при прокрутке recyclerivew - PullRequest
0 голосов
/ 31 марта 2020

Когда я использовал Firestore для базы данных и использовал ListAdapter, используя View-Model для настройки list с paging. Теперь мой запрос состоит в том, что я успешно настроил данные, но когда я обновляю количество пользователей like с помощью кнопки, то после прокрутки я вижу, что вышеупомянутый обновленный элемент показывает мне ниже, где ограниченный постраничный список завершен sh и новый список. Пожалуйста, помогите мне решить этот вопрос. Мой код для настройки View-Models

            postListViewModel=new ViewModelProvider(getActivity()).get(PostListViewModel.class);

        PostListLiveData productListLiveData = postListViewModel.getProductListLiveData();
        if (productListLiveData != null) {


            productListLiveData.observe(getActivity(), new Observer<PostOpration>() {
                @Override
                public void onChanged(PostOpration operation) {
                    switch (operation.type) {
                        case R.string.added:
                            Posts addedProduct = operation.post;
                            addPost(addedProduct);
                            break;
                        case R.string.modified:
                            Posts modifiedProduct = operation.post;
                            modifyPost(modifiedProduct);
                            break;
                        case R.string.removed:
                            Posts removedProduct = operation.post;
                            removePost(removedProduct);
                    }
                }
                    // latestPostAdapter.notifyDataSetChanged();
                });

        }

         latestPostAdapter = new NewPostListAdapter(getActivity(),myContext,mPostList,searchString);
         mRecyclerView.setAdapter(latestPostAdapter);

    }
    private void addPost(Posts addedPost) {
        mPostList.add(addedPost);
        latestPostAdapter.submitList(mPostList);
    }

    private void modifyPost(Posts modifiedPost) {
        for (int i = 0; i < mPostList.size(); i++) {
            Posts currentProduct = mPostList.get(i);
            if (currentProduct.doc_id.equals(modifiedPost.doc_id)) {
                int position=latestPostAdapter.getItemPosition();
                System.out.println("ITEM POSITION "+i+" and "+position);
                mPostList.remove(currentProduct);
                mPostList.add(i, modifiedPost);

            }
        }
    }

    private void removePost(Posts removedPost) {
        for (int i = 0; i < mPostList.size(); i++) {
            Posts currentProduct = mPostList.get(i);
            if (currentProduct.doc_id.equals(removedPost.doc_id)) {
                mPostList.remove(currentProduct);
                latestPostAdapter.submitList(mPostList);
            }
        }
    }

Пожалуйста, помогите мне об этом, Спасибо заранее

...