如何从所有用户的FirebaseRecyclerAdapter隐藏当前用户? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

目前,它会提取所有用户详细信息并填充其图像,名称和生物。我希望它从用户列表中隐藏当前用户,我不知道如何为它实现代码。

我已经尝试使用if/while语句将dataSnapshot与当前用户进行比较,但我不知道如何根据这种情况填充用户。

public class SearchFragment extends Fragment {
    private RecyclerView usersList;
    private DatabaseReference databaseReference;
    private DatabaseReference userDatabase;
    private DatabaseReference checkName;
    private FirebaseAuth firebaseAuth;
    private String currentUserID;
    private View view;

    public SearchFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view =  inflater.inflate(R.layout.fragment_search, container, false);
        usersList = view.findViewById(R.id.search_users);
        firebaseAuth = FirebaseAuth.getInstance();
        currentUserID = firebaseAuth.getCurrentUser().getUid();
        databaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
        userDatabase = FirebaseDatabase.getInstance().getReference();
        checkName = userDatabase.child("Users").child(currentUserID).child("name");
        usersList.setHasFixedSize(true);
        usersList.setLayoutManager(new LinearLayoutManager(getContext()));

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
        final FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
                .setQuery(databaseReference, Users.class)
                .build();

        FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Users, SearchFragment.UsersViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull SearchFragment.UsersViewHolder holder, int position, @NonNull final Users users) {
                 holder.setName(users.getName());
                 holder.setCity(users.getCity());
                 holder.setImage(users.getImage());

                final String user_ID = getRef(position).getKey();
                final String user_Name = users.getName();
                final String user_Img = users.getImage();

                holder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        CharSequence pickOption[] = new CharSequence[]{"View Profile", "Send Message"};

                        final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                        builder.setTitle("Select an Option");
                        builder.setItems(pickOption, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                if (i == 0){
                                    Intent otherProfileIntent = new Intent(getActivity(), OthersProfileActivity.class);
                                    otherProfileIntent.putExtra("user_ID", user_ID);
                                    otherProfileIntent.putExtra("user_Name", user_Name);
                                    otherProfileIntent.putExtra("user_Img", user_Img);
                                    startActivity(otherProfileIntent);
                                }

                                if (i == 1) {
                                    Intent messageIntent = new Intent(getActivity(), MessageActivity.class);
                                    messageIntent.putExtra("user_ID", user_ID);
                                    messageIntent.putExtra("user_Name", user_Name);
                                    messageIntent.putExtra("user_Img", user_Img);
                                    startActivity(messageIntent);
                                }
                            }
                        });

                        builder.show();
                    }
                });
            }

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

        usersList.setAdapter(adapter);
        adapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
    }

    public static class UsersViewHolder extends RecyclerView.ViewHolder {
        View mView;

        public UsersViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setName(String name) {
            TextView userNameView = mView.findViewById(R.id.single_userName);
            userNameView.setText(name);
        }

        public void setCity(String name) {
            TextView userNameView = mView.findViewById(R.id.single_userStatus);
            userNameView.setText(name);
        }

        public void setImage(String image) {
            CircleImageView userImage = mView.findViewById(R.id.single_userImg);
            if(!image.equals("default")) {
                Picasso.get().load(image).into(userImage);
            }
        }
    }
}

我期待当前用户被隐藏在RecyclerView中所有用户的列表中。提前致谢!

java android firebase firebase-realtime-database android-recyclerview
1个回答
0
投票

您可以考虑修改您的databaseReference,如下所示。

databaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
checkName = userDatabase.child("Users").child(currentUserID).child("name");

// This is your updated database reference
databaseReference = FirebaseDatabase.getInstance().getReference()
        .child("Users").child(currentUserID);

现在,在为FirebaseRecyclerAdapter设置选项时,您可以考虑设置如下查询。

final FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
    .setQuery(databaseReference.equalTo(null), Users.class)
    .build();

我没有测试过这个。但是,如果有效,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.