gpt4 book ai didi

java - FirebaseRecyclerAdapter 的 FirebaseDatabase 查询 : How to query some data basing on some values from other childs.

转载 作者:行者123 更新时间:2023-12-02 02:23:05 24 4
gpt4 key购买 nike

我正在开发具有 fragment 的应用程序,该 fragment 使用以下查询显示带有关注按钮的新用户:

query = mDatabaseref.child("users").orderByChild("date").limitToLast(10);

单击“关注”按钮后,当前的 User Uid 将被保存为另一个名为“Follows”的子级中的子级,以及另外 2 个子级的“following”和“followers”,如下图所示:

enter image description here

我想要做的是为另一个名为Following的 fragment 创建一个Query,并显示当前用户正在关注的所有用户,并具有以下能力:获取他们的名字,我正在考虑根据从 child 身上获取的 dataSnapshotFirebaseRecyclerAdapter onBindViewHolder 方法中制作数据 Uid,但我认为这会很复杂,另一方面,我尝试对用户信息 child 中的以下内容进行排序直接,但它会导致 RecyclerView 上出现奇怪的行为。

最佳答案

我不会为您编写包括 FirebaseRecyclerAdapter 在内的所有代码,我将向您展示如何查询以获得所需的结果。据我了解,这就是问题所在。因此,为了实现这一目标,您需要查询数据库两次,一次获取所有这些 id,第二次根据这些 id 获取名称。因此,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference followingRef = rootRef.child("follows").child(uid).child("following");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String userId = ds.getKey();

DatabaseReference userIdRef = rootRef.child("users").child(userId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
String name = dSnapshot.child("name").getValue(String.class);
Log.d("TAG", name);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
userIdRef.addListenerForSingleValueEvent(eventListener);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
followingRef.addListenerForSingleValueEvent(valueEventListener);

logcat 中的结果将是属于单个用户的所有关注者的名称。

关于java - FirebaseRecyclerAdapter 的 FirebaseDatabase 查询 : How to query some data basing on some values from other childs.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48202915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com