android - Android Firebase 数据库组合多个查询
问题描述
我想显示一个用户列表(使用 RecyclerView ,适配器 ...),该列表包含用户信息(照片,姓名,电子邮件 ....)以及关于该用户的评论计数,用于我制作的用户信息一个firebase查询,我得到了我想要的所有信息
al = new ArrayList<>();
FirebaseDatabase.getInstance().getReference().child("Seeker").child(categorie).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// clear data before
al.clear();
for (DataSnapshot dataLoop : dataSnapshot.getChildren()) {
String getcity = dataLoop.child("City").getValue().toString().trim();
if (getcity.equalsIgnoreCase(City.trim())) {
p = new Person();
p.setName(dataLoop.child("Name").getValue(String.class));
p.setId(dataLoop.child("Id").getValue(String.class));
if (dataLoop.hasChild("urlToImage")) {
p.setUrl(dataLoop.child("urlToImage").getValue(String.class));
} else {
p.setImage(R.drawable.profile);
}
readData(new MyCallback() {
@Override
public void onCallback(String value) {
Log.d("TAG", value);
p.setComms(value);
}
}, dataLoop.child("Id").getValue(String.class));
al.add(p);
}
}
md = new MyAdaptor(MyClass.this, al);
rv.setAdapter(md);
}
……
public void readData(final MyCallback myCallback, String value) {
database.child("Review").child(value).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataLoop : dataSnapshot.getChildren()) {
count = dataLoop.getChildrenCount();
Log.d("TAG", "count = " + count);
p.setComms(String.valueOf(count));
}
myCallback.onCallback(String.valueOf(count));
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
public interface MyCallback {
void onCallback(String value);
}
我的问题是我想为每个用户添加一个更多信息,这是每个用户的评论计数,我尝试在循环内进行另一个查询,但是由于 firebase 调用是异步的,它不起作用,布局不显示数量评论。
这是我的 Firebase 数据库结构的示例
-Review
-HDGFDGDGDB (user id)
-FSETTDGDG (user who made the review)
-1 : review1
-2 : review2
-Seeker
-HDGFDGDGDB (user id)
-city : "NY"
-name : "Jhon"......
什么是结合这两个查询以显示 recyclerView 中的所有信息的最佳解决方案。
解决方案
推荐阅读
- maven - 在 maven-remote-resources-plugin 中激活过滤
- javascript - 当div滑动到结束时如何使div返回起点
- scala - 如何修复关于 asInstanceOf 使用的警告
- php - Laravel ::all() 替代方法,返回一个 Builder 对象
- java - JavaFX 的 TableView 具有突出显示的文本和省略号功能
- google-bigquery - Big Query 命令行查询和追加到表
- gnuplot - gnuplot:堆积条形图需要直方图
- c# - 嵌套 foreach 循环到 LINQ
- c++ - 使用贝塞尔曲线的 OpenGL 圆形
- jquery - 单击输入时将类添加到标签