gpt4 book ai didi

android - 加载两个依赖数据集

转载 作者:行者123 更新时间:2023-11-29 01:18:59 26 4
gpt4 key购买 nike

我在 Activity 的 onCreate 函数中加载了两个数据集:

protected void onCreate(Bundle savedInstanceState) {
....

mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
currentUser = dataSnapshot.getValue(Users.class);
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "error:", databaseError.toException());
}
});
mDatabase.child("events").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
...
event = dataSnapshot.getValue(Events.class);
if (event.getHost().equals(currentUser.getId()) {
....
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "error:", databaseError.toException());
}
});
String name = currentUser.getName();
....
}

所以我需要事件数据集中用户数据集的一些数据。大多数时候这是有效的,但由于它们被称为异步,它们有时会以错误的顺序加载。因此事件在用户加载之前加载。

我该如何解决这个问题?

最佳答案

如果要保证顺序,可以将事件的加载嵌套到用户的回调中:

String name;
mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
currentUser = dataSnapshot.getValue(Users.class);
name = currentUser.getName();
mDatabase.child("events").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
...
event = dataSnapshot.getValue(Events.class);
if (event.getHost().equals(currentUser.getId()) {
....
}
}

public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "error:", databaseError.toException());
}
});
}

public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "error:", databaseError.toException());
}
});

嵌套变得有点深,但如果您将事件加载拉到一个单独的(命名的)方法中,通常情况会再次好转。

关于android - 加载两个依赖数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38029029/

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