如何从 FirebaseRecyclerAdapter 中排除项目

How to exclude item from a FirebaseRecyclerAdapter

我的 populateViewHolder:

中有此代码
public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) {
            String k = getRef(position).getKey();
            ref.child(k).child("users").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (!dataSnapshot.hasChild(getUid())) {
                       //Something...
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
            //...Populating the viewholder...

如果 !dataSnapshot.hasChild(getUid())true,我想删除该项目,否则继续正常填充 ViewHolder。请注意,我不想 从数据库中删除该项目 ,我只希望它从 FirebaseRecyclerAdapter 中消失。有什么方法可以做到这一点?


编辑: 我仍在寻找此问题的解决方案,因为它 尚未修复 。我的解决方案是非常不鼓励和非常糟糕的做法,我已经重新考虑自己使用它。

更新:这是非常糟糕的做法并且非常有问题。我非常不鼓励任何人使用它,因为它使你的RecyclerView非常故障并会导致过多的数据正在加载,这不是您的用户想要的

最后我手动完成了:

if(x)
   viewHolder.itemView.setVisibility(View.GONE); //itemView is a view provided by Android, no need to initiate it.

这表示,如果 xtrue,获取该行并将其可见性设置为 GONE。这为我解决了问题。我可能会在 GitHub.

上分叉这个

最佳做法是使用服务器端过滤: https://firebase.google.com/docs/database/android/retrieve-data#sorting_and_filtering_data

目前无法使用 FirebaseUI 在客户端过滤您的结果(但我相信它计划在未来实施):
https://github.com/firebase/FirebaseUI-Android/issues/135