Android FireStoreRecyclerAdapter未显示添加到firestore的第一个项目

Android FireStoreRecyclerAdapter未显示添加到firestore的第一个项目,android,firebase,firebase-realtime-database,android-recyclerview,google-cloud-firestore,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Google Cloud Firestore,我有一个片段叫做today,在其中我得到了当天的所有任务。但是,当我在firestore中添加一个当天的项目时,这是添加到firestore的第一个任务,现在任务显示在片段中,当我添加第二个任务时,第三个任务显示相同。但第一个任务从未显示,你知道为什么要这样做吗 这是今天的片段: public class TodayFragment extends Fragment { private View rootView; private TodayAdaptor todayAdapto

我有一个片段叫做today,在其中我得到了当天的所有任务。但是,当我在firestore中添加一个当天的项目时,这是添加到firestore的第一个任务,现在任务显示在片段中,当我添加第二个任务时,第三个任务显示相同。但第一个任务从未显示,你知道为什么要这样做吗

这是今天的片段:

public class TodayFragment extends Fragment {
    private View rootView;
    private TodayAdaptor todayAdaptor;

    private ColorDrawable swipeBackgroundRight = new ColorDrawable(Color.parseColor("#FF0000"));
    private Drawable iconDelete;


    private FirebaseFirestore firestore = FirebaseFirestore.getInstance();
    private CollectionReference collectionReference;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if (getActivity() != null) {
            getActivity().setTitle(R.string.today);
        }

        collectionReference = firestore.collection("Users")
                .document(FirebaseAuth.getInstance().getCurrentUser().getUid())
                .collection("Tasks");

        iconDelete = ContextCompat.getDrawable(getActivity(), R.drawable.ic_delete);
        rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_today, container, false);
        RecyclerView recyclerViewToday = rootView.findViewById(R.id.recycler_view_today);

        /* create the options for query */
        Calendar calendar = Calendar.getInstance();
        String dateFormatted = java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL).format(calendar.getTime());

        Query query = collectionReference.whereEqualTo("date", dateFormatted);
        FirestoreRecyclerOptions<Task> options =
                new FirestoreRecyclerOptions.Builder<Task>()
                        .setQuery(query, Task.class)
                        .build();

        todayAdaptor = new TodayAdaptor(options);
        recyclerViewToday.setHasFixedSize(true);
        recyclerViewToday.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerViewToday.setAdapter(todayAdaptor);

        new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                if (direction == ItemTouchHelper.RIGHT) {
                    todayAdaptor.deleteTask(viewHolder.getAdapterPosition());
                    Toast.makeText(getActivity(), "Task deleted", Toast.LENGTH_SHORT).show();
                }


            }

            @Override
            public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {


                View itemView = viewHolder.itemView;
                int iconMargin = (itemView.getHeight() - iconDelete.getIntrinsicHeight()) / 2;
                if (dX > 0) {
                    swipeBackgroundRight.setBounds(itemView.getLeft(), itemView.getTop(), (int) dX, itemView.getBottom());
                    iconDelete.setBounds(itemView.getLeft() + iconMargin, itemView.getTop() + iconMargin, itemView.getLeft() + iconMargin + iconDelete.getIntrinsicWidth(), itemView.getBottom() - iconMargin);
                } else {
                    swipeBackgroundRight.setBounds(0, 0, 0, 0);
                }
                c.save();

                swipeBackgroundRight.draw(c);
                if (dX > 0) {
                    c.clipRect(itemView.getLeft(), itemView.getTop(), (int) dX, itemView.getBottom());
                } else {
                    c.clipRect(itemView.getRight() + (int) dX, itemView.getTop(), itemView.getRight(), itemView.getBottom());
                }

                iconDelete.draw(c);

                c.restore();

                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
            }
        }).attachToRecyclerView(recyclerViewToday);

        return rootView;
    }

    @Override
    public void onStart() {
        super.onStart();
        todayAdaptor.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
        todayAdaptor.stopListening();
    }
}
公共类TodayFragment扩展了片段{
私有视图rootView;
私人Todayadadadadadaptor;
private ColorDrawable swipeBackgroundRight=新的ColorDrawable(Color.parseColor(“#FF0000”);
私人可提取iconDelete;
私有FirebaseFirestore firestore=FirebaseFirestore.getInstance();
私人收藏参考收藏参考;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
如果(getActivity()!=null){
getActivity().setTitle(R.string.today);
}
collectionReference=firestore.collection(“用户”)
.document(FirebaseAuth.getInstance().getCurrentUser().getUid())
.收集(“任务”);
iconDelete=ContextCompat.getDrawable(getActivity(),R.drawable.ic_delete);
rootView=LayoutInflater.from(getActivity()).flate(R.layout.fragment\u today,container,false);
RecyclerView recyclerViewToday=rootView.findViewById(R.id.recycler\u-view\u-day);
/*创建查询的选项*/
日历=Calendar.getInstance();
String dateFormatted=java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL).format(calendar.getTime());
Query Query=collectionReference.whereEqualTo(“日期”,日期格式);
FirestoreRecyclerOptions选项=
新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,任务.class)
.build();
TodayaAdaptor=新的TodayaAdaptor(选项);
recyclerivewToday.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
recyclerivewToday.setAdapter(TodayaAdapter);
新建ItemTouchHelper(新建ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.RIGHT){
@凌驾
公共布尔onMove(@NonNull RecyclerView RecyclerView,@NonNull RecyclerView.ViewHolder ViewHolder,@NonNull RecyclerView.ViewHolder target){
返回false;
}
@凌驾
公共void onsweed(@NonNull RecyclerView.ViewHolder ViewHolder,int-direction){
if(direction==ItemTouchHelper.RIGHT){
deleteTask(viewHolder.getAdapterPosition());
Toast.makeText(getActivity(),“任务已删除”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
public void onchildraw(@NonNull Canvas c、@NonNull recycleriew recycleriew、@NonNull recycleriew.ViewHolder ViewHolder、float dX、float dY、int actionState、boolean isCurrentlyActive){
View itemView=viewHolder.itemView;
int-iconMargin=(itemView.getHeight()-iconDelete.getIntrinsicHeight())/2;
如果(dX>0){
swipeBackgroundRight.setBounds(itemView.getLeft(),itemView.getTop(),(int)dX,itemView.getBottom());
iconDelete.setBounds(itemView.getLeft()+iconMargin,itemView.getTop()+iconMargin,itemView.getLeft()+iconMargin+iconDelete.getIntrinsicWidth(),itemView.getBottom()-iconMargin);
}否则{
swipeBackgroundRight.setBounds(0,0,0,0);
}
c、 save();
swipeBackgroundRight.draw(c);
如果(dX>0){
c、 clipRect(itemView.getLeft(),itemView.getTop(),(int)dX,itemView.getBottom());
}否则{
c、 clipRect(itemView.getRight()+(int)dX、itemView.getTop()、itemView.getRight()、itemView.getBottom());
}
i删除。绘制(c);
c、 恢复();
super.onchildraw(c、recyclerView、viewHolder、dX、dY、actionState、isCurrentlyActive);
}
}).attachToRecyclerView(recyclerViewToday);
返回rootView;
}
@凌驾
public void onStart(){
super.onStart();
TodayaAdaptor.startListening();
}
@凌驾
公共void onStop(){
super.onStop();
TodayaAdaptor.stopListening();
}
}
这是我的适配器:

public class TodayAdaptor extends FirestoreRecyclerAdapter<Task, TodayAdaptor.TodayViewHolder> {

    public TodayAdaptor(@NonNull FirestoreRecyclerOptions<Task> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull TodayViewHolder holder, int position, @NonNull Task model) {
        holder.todayCheckBox.setChecked(model.isCompleted());
        holder.taskDescription.setText(model.getName());
    }

    @NonNull
    @Override
    public TodayViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.today_item, parent, false);
        return new TodayViewHolder(view);
    }

    public void deleteTask(int position){
        /* save the item to be
          restored if the user want's so
         */
        getSnapshots().getSnapshot(position).getReference().delete();
    }


    class TodayViewHolder extends RecyclerView.ViewHolder {
        private CheckBox todayCheckBox;
        private TextView taskDescription;

        public TodayViewHolder(@NonNull View itemView) {
            super(itemView);
            todayCheckBox = itemView.findViewById(R.id.today_item_check_box);
            taskDescription = itemView.findViewById(R.id.today_item_task_description);
        }

    }
}
公共类ToDayaAdapter扩展了FirestoreRecyclerAdapter{
公共ToDayaAdaptor(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull TodayViewHolder,int位置,@NonNull任务模型){
holder.todayCheckBox.setChecked(model.isCompleted());
holder.tasksdescription.setText(model.getName());
}
@非空
@凌驾
public Today ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.today_item,parent,false);
返回新的TodayViewHolder(视图);
}
公共任务(内部位置){
/*保存要删除的项目
如果用户愿意的话,可以恢复
*/
getSnapshots().getSnapshot(位置).getReference().delete();
}
类TodayViewHolder扩展了RecyclerView.ViewHolder{
今日私人复选框;
私有文本视图任务描述;
public TodayViewHolder(@NonNull View itemView){
超级(项目视图);
todayCheckBox=itemView.findViewById(R.id.today\u item\u复选框);
taskDescription=itemView.findViewById(R.id.today\u item\u task\u description)