首页 > 解决方案 > RecyclerView 的 Firebase 查询

问题描述

我想得到“朋友”的第一个孩子/孩子的日期。为此,我将查询写为 在此处输入图像描述

Query query = FirebaseDatabase.getInstance()
            .getReference()
            .child("Friends").child("SQyOq80egYehjqx4sgiyeNcW8P02");

在上面的查询中,我想具体获取“SQyOq80egYehjqx4sgiyeNcW8P02”的日期。我怎样才能做到这一点?上面的查询不起作用。

我以前用这段代码写过这些值:

 final String currentDate = DateFormat.getDateInstance().format(new Date());
                    mFriendDatabase.child(mCurrent_user.getUid()).child(user_id).setValue(currentDate)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {

                                    mFriendDatabase.child(user_id).child(mCurrent_user.getUid()).setValue(currentDate)
                                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                                                        @Override
                                                        public void onSuccess(Void aVoid) {

                                                            mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                                                                @Override
                                                                public void onSuccess(Void aVoid) {


                                                                    mProfileSendReqBtn.setEnabled(true);
                                                                    mCurrent_state = "friends";
                                                                    mProfileSendReqBtn.setText("UnFriend");

                                                                    mDeclineBtn.setVisibility(View.INVISIBLE);
                                                                    mDeclineBtn.setEnabled(false);


                                                                }
                                                            });
                                                        }
                                                    });
                                                }
                                            });
                                    }
                                });

                    }

回收站代码:

FirebaseRecyclerOptions<Friends> options =
                new FirebaseRecyclerOptions.Builder<Friends>()
                        .setQuery(query, Friends.class)
                        .build();

        Log.d("sdfsdfsdf", options.getSnapshots().toString());

        firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(options) {
            @Override
            public FriendsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                // Create a new instance of the ViewHolder, in this case we are using a custom
                // layout called R.layout.message for each item
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.adapter_users_activity_layout, parent, false);

                return new FriendsViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(final FriendsViewHolder friendsViewHolder, int position, Friends friends) {
//                Log.d("sdfsdfdf", friends.getDate().toString());
                friendsViewHolder.setDate(friends.getDate());

标签: androidfirebasefirebase-realtime-database

解决方案


如果你想找到一些价值使用Query

Query applyQuery = ref.child("Friends").orderByChild("Wed5qPTC.....").equalTo("Value for Check");
applyQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snap: dataSnapshot.getChildren()) {
            //You will get your value in snap
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.e("Realtime", "onCancelled", databaseError.toException());
    }
});

推荐阅读