Recycler View с использованием Firestore идет вверх при изменении данных - PullRequest
0 голосов
/ 26 февраля 2020

Я использовал программу recyclerView с базой данных Firestore.

Каждый раз, когда я нажимаю кнопку «Мне нравится» на сообщении подачи, представление переработчика стремится к go к первому сообщению. Нажатие на кнопку «Мне нравится» включает в себя 1 операцию записи и 1 обновление объекта FeedPost.

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View fragView = inflater.inflate(R.layout.fragment_feed, container, false);
        db = FirebaseFirestore.getInstance();    
        feedRecyclerView = (RecyclerView)fragView.findViewById(R.id.feed_recycler_view);
        setUpFeedRecyclerView();
        return fragView;
    }


    private void setUpFeedRecyclerView() {
        feedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        getFeed();

    }

    private void getFeed() {

        db.collection("XYZ")
                .orderBy("time_posted", Query.Direction.DESCENDING).limit(100)
                .addSnapshotListener(new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(QuerySnapshot snapshots, FirebaseFirestoreException e) {
                        if (e != null) {

                            return;
                        }
                        List<FeedPost> feedList = new ArrayList<>();
                        for (QueryDocumentSnapshot doc : snapshots) {

                            feedList.add(doc.toObject(FeedPost.class));
                        }

                        feedAdapter = new FeedAdapter(feedList);
                        feedRecyclerView.setAdapter(feedAdapter);
                        feedAdapter.notifyDataSetChanged();
                    }
                });
    }

Я хочу знать, как можно предотвратить прокрутку в верхнюю часть окна рециркуляции, когда подобное кнопка нажата.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Не устанавливайте адаптер внутри обратного вызова события. Установите адаптер при настройке представления и просто обновите данные внутри (и предпочтительно используйте правильные методы notifyItemInserted / Removed / et c).

0 голосов
/ 27 февраля 2020

Лучший способ справиться с этим - использовать FirestoreRecyclerAdapter и позволить ему обрабатывать все эти варианты использования.

https://github.com/firebase/FirebaseUI-Android/tree/master/firestore#using thethe firestorerecycleradapter

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