且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Firebase Firestore文档更改

更新时间:2023-02-14 09:59:11

以下代码在3种情况下对我有效:添加,修改,删除(Android Firestore)

below code worked for me in 3 conditions ADDED,MODIFIED,REMOVED (Android Firestore)

 for (DocumentChange documentChange : queryDocumentSnapshots.getDocumentChanges()) {
                    if (documentChange.getType() == DocumentChange.Type.ADDED) {

                        String doc_id = documentChange.getDocument().getId();
                        PostModel postModel = documentChange.getDocument().toObject(PostModel.class).withDocId(doc_id);
                        postModelList.add(postModel);

                    } else if (documentChange.getType() == DocumentChange.Type.MODIFIED) {

                         // modifying

                        String docID = documentChange.getDocument().getId();
                        PostModel changedModel = documentChange.getDocument().toObject(PostModel.class).withDocId(docID);
                        if (documentChange.getOldIndex() == documentChange.getNewIndex()) {
                            // Item changed but remained in same position
                            postModelList.set(documentChange.getOldIndex(),changedModel);
                            postListAdapter.notifyItemChanged(documentChange.getOldIndex());
                        }else {
                            // Item changed and changed position
                            postModelList.remove(documentChange.getOldIndex());
                            postModelList.add(documentChange.getNewIndex(),changedModel);
                            postListAdapter.notifyItemMoved(documentChange.getOldIndex(),documentChange.getNewIndex());
                        }

                        postListAdapter.notifyDataSetChanged();
                    } else if (documentChange.getType() == DocumentChange.Type.REMOVED) {

                        // remove
                        postModelList.remove(documentChange.getOldIndex());
                        postListAdapter.notifyItemRemoved(documentChange.getOldIndex());
                    }


                }