我想要使用自动生成的子项(Estab_url child)检索多个子项。这是我的代码。我只能检索一个孩子及其随机
final DatabaseReference establishments = database.getReference("establishments");
establishments.child(s2).child("Estab_url").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.hasChildren()) {
// String value = dataSnapshot.getValue(String.class);
String sd = dataSnapshot.getKey();
Name.setText(sd);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
如果您想要阅读每个孩子的URL值:
establishments.child(s2).child("Estab_url").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String url = dataSnapshot.child("url").getValue(String.class);
Name.setText(url);
}
如果这不是您想要的,请更新您的问题以重新解决问题。
<强>更新强>
如果您想要捕获列表中的所有URL,您需要在侦听器之外设置列表,然后在其中添加每个URL:
List<String> urls = new LinkedList<String>();
establishments.child(s2).child("Estab_url").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String url = dataSnapshot.child("url").getValue(String.class);
urls.add(url);
// TODO: do something with the up-to-date list of URLs
}
但请注意,您仍然无法使用侦听器的外部列表。任何需要列表最新内容的代码都需要从内部调用/触发(在这种情况下)onChildAdded
。