FirebaseRecyclerAdapter 触发两次

FirebaseRecyclerAdapter firing twice

我在使用 FirebaseRecyclerAdapater 时遇到问题,起初它工作正常,但现在 adapter 触发了两次。数据库引用仅引用一个 child,但它总是触发两次。文本 "counter" 的吐司将出现两次

FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder> requestAdapter = 
    new FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder>(
    RequestVisit.class,
    R.layout.seekerrequests_layout,
    RequestViewHolder.class,
    requestDatabase.child("2DBwmhGplGMoAlLy6337HZEShi93")
) {
@Override
protected void populateViewHolder(final RequestViewHolder viewHolder, RequestVisit model, int position) {
     Toast.makeText(getContext(), "counter" + 
     viewHolder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
    }
};
requestVisitList.setAdapter(requestAdapter);

Firebase*Adapter 显示项目列表,child 节点位于您将其附加到的位置下。

如果populateViewHolder以两个不同的位置被调用,这意味着requestDatabase.child("2DBwmhGplGMoAlLy6337HZEShi93")下面有两个children。

请记住,如果 2DBwmhGplGMoAlLy6337HZEShi93 是一个具有两个属性的 child 节点,那么您的方法将为每个属性调用 populateViewHolder

如果您只想显示 RecyclerView 中的单个项目,您可以创建一个简单的查询:

FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder> requestAdapter = 
    new FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder>(
    RequestVisit.class,
    R.layout.seekerrequests_layout,
    RequestViewHolder.class,
    requestDatabase.orderByKey().equalTo("2DBwmhGplGMoAlLy6337HZEShi93")
)