如何隐藏当前在线用户数据以防止在 firebase Recycler Adapter 中显示?

How to hide current online user data from displaying in firebaseRecycler Adapter?

我的应用程序正在 firebaseRecycler 适配器中显示所有 firebase 数据。我想从显示中排除当前在线用户的数据。例如 Ibad Ullah 登录应用程序,然后他的数据不得显示在 recyclerview 中。我使用了 Query orderByChild 但它隐藏了所有用户数据。我怎样才能做到这一点?谢谢你。下面是我的代码。

仪表板Activity

if(fAuth.getCurrentUser() != null){
        UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
    }

        dRef.child(UID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                remainingClicks = String.valueOf(snapshot.child("clicksRemain").getValue(Integer.class));
                showGigCount = String.valueOf(snapshot.child("showGigCount").getValue(Integer.class));
                fiverrLink1 = (String) snapshot.child("gig").getValue();
                String username = (String) snapshot.child("name").getValue();
                clicks.setText(remainingClicks);
                userName.setText(username);
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

    recyclerView = findViewById(R.id.dashboardRCV);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
  LoadData();

}

private void LoadData() {
    options = new FirebaseRecyclerOptions.Builder<ModelClass>()
            .setQuery(dRef, ModelClass.class)
            .build();
    adapter = new FirebaseRecyclerAdapter<ModelClass, MyViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull ModelClass model) {

            if (dRef.child(UID).child("clicksRemain").equals(0)){
                zeroClicks.setVisibility(View.VISIBLE);
                recyclerView.setVisibility(View.GONE);
            }
            
            holder.previewLink.setURL(model.getGig(), new URLEmbeddedView.OnLoadURLListener() {
                @Override
                public void onLoadURLCompleted(URLEmbeddedData data) {

                    holder.previewLink.title(data.getTitle());
                    holder.previewLink.description(data.getDescription());
                    holder.previewLink.host(data.getHost());
                    holder.previewLink.thumbnail(data.getThumbnailURL());
                    holder.previewLink.favor(data.getFavorURL());
                }
            });


            //This will hide the gig if its showGigCount becomes 0
            Query query = dRef.orderByChild("showGigCount").equalTo(0);
            ValueEventListener valueEventListener = new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if (snapshot.exists()){
                        holder.previewLink.setVisibility(View.GONE);
                    }else{
                        holder.previewLink.setVisibility(View.VISIBLE);
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                }
            };
            query.addListenerForSingleValueEvent(valueEventListener);

            holder.previewLink.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                //    String profileLink = getRef(position).child(model.getGig()).toString();
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(model.getGig()));
                    startActivity(browserIntent);

                }
            });
    

无法从 Firebase 数据库结果中排除特定节点,因此常用的方法是 隐藏 当前用户的节点 UI:

@Override
protected void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull ModelClass model) {
   if (/* check whether this node is for the current */) { 
      holder.itemView.setVisibility(View.GONE); 
   }
   else {
      holder.itemView.setVisibility(View.VISIBLE); 
   }
   holder.geglink.setText(model.getGig());
}

另见:

您还需要 ,或者您可以保留一个单独的密钥列表。