gpt4 book ai didi

java - 使用 Firebase 数据库获取每个子项的最后一个子项

转载 作者:行者123 更新时间:2023-12-02 10:54:42 25 4
gpt4 key购买 nike

我想获取下图中的 sender_uid 值:

enter image description here

这是我下面的代码。我没有得到任何值(value),我也不知道为什么。有人可以解释一下代码有什么问题吗?谢谢!

编辑:我只想要每个家长的最后 sender_uid - 例如:

  • 对于节点391rfBEXjVUplEW8aoahMtluSmz1_6dTv7oHnWOh55XzRuf9ouZFZkGt2
    我只需要来自 LJxvDjdetWz1-DAFVCysender_uid不需要来自 LJxvA65WA7MX8aaX5nF 的消息。

    mDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    List<UsersListGetter> usersList = new ArrayList<>();
    recyclerView.setAdapter(new UsersListAdapter(usersList, getApplicationContext()));

    recyclerView.setAdapter(new UsersListAdapter(null, getApplicationContext()));

    for (DataSnapshot ch : dataSnapshot.getChildren()) {
    String senderReceiver[] = ch.getKey().split("_");

    if (senderReceiver[0].equals(mAuth.getUid()) || senderReceiver[1].equals(mAuth.getUid())) {
    Query lastQuery = mDatabase.child(ch.getKey()).orderByKey().limitToLast(1);
    lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    String message = dataSnapshot.child("message_body").getValue().toString();
    Log.d("MSG", message);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    //Handle possible errors.
    }
    });
    }
    }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
    });

最佳答案

您可以通过这种方式从每个节点获取sender_uid

首先创建一个pojo类来获取你想要的数据

public class UserPojo {

private String sender_uid;

public UserPojo() {

}

public String getSender_uid() {
return sender_uid;
}

public void setSender_uid(String sender_uid) {
this.sender_uid = sender_uid;
}
}

然后为每个聊天引用检索它

mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<UsersListGetter> usersList = new ArrayList<>();
recyclerView.setAdapter(new UsersListAdapter(usersList, getApplicationContext()));

recyclerView.setAdapter(new UsersListAdapter(null, getApplicationContext()));

for (DataSnapshot ch : dataSnapshot.getChildren()) {
UserPojo up = ch.getValue(UserPojo.class);
String senderUid = up.getSender_uid(); //here you got your sender_uid

Query lastQuery = mDatabase.child(ch.getKey()).orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String message = dataSnapshot.child("message_body").getValue().toString();
Log.d("MSG", message);
}

@Override
public void onCancelled(DatabaseError databaseError) {
//Handle possible errors.
}
});

}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

关于java - 使用 Firebase 数据库获取每个子项的最后一个子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861947/

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