使用Firestore的Recycler View在更改的数据上居首

问题描述 投票:0回答:1

我已将RecyclerView与Firestore数据库一起使用。

[每当我按Feed帖子上的like按钮时,回收站视图就会转到第一篇文章。单击“赞”按钮涉及对FeedPost对象进行1次写入和1次更新操作。

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

[我想知道每当单击赞按钮时如何防止滚动到回收站视图的顶部。

android android-recyclerview google-cloud-firestore recycler-adapter
1个回答
0
投票

避免在事件回调中设置适配器。在设置视图时设置适配器,然后只更新其中的数据(最好使用正确的notifyItemInserted / Removed / etc方法)。

© www.soinside.com 2019 - 2024. All rights reserved.