FirebaseRecyclerAdapter触发两次

时间:2018-05-12 09:14:35

标签: android firebase firebase-realtime-database firebaseui

我在使用FirebaseRecyclerAdapater时遇到问题,起初它工作正常,但现在这个adapter正在触发两次。数据库引用仅引用一个子节点,但它始终触发两次。带有文字的Toast" 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);

1 个答案:

答案 0 :(得分:0)

Firebase *适配器显示项目列表,即您将其附加到的位置下的子节点。

如果使用两个不同的职位调用populateViewHolder,则表示requestDatabase.child("2DBwmhGplGMoAlLy6337HZEShi93")下有两个孩子。

请注意,如果2DBwmhGplGMoAlLy6337HZEShi93是具有两个属性的子节点,那么您的方法将为每个属性调用populateViewHolder

如果您只想在RecyclerView中显示单个项目,可以使用以下命令创建简单查询:

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