Firebase 实时数据库在 Xamarin 上检索了单个数据 Android

Firebase Realtime Database Retrieved Single Data on Xamarin Android

当我在 OndataChange 上放置断点时,我成功地从实时数据库 firebase 获取数据,但是当我在 OnDataChange 方法之后放置断点时,记录现在为空。

public void OnDataChange(DataSnapshot dataSnapshot)
{
   
    if (dataSnapshot.Value != null)
    {
        reclist.Clear();
        TempDB rec = new TempDB();


        rec.ID = dataSnapshot.Key;
        rec.Firstname = dataSnapshot.Child("FirstName").Value.ToString();
        rec.Lastname = dataSnapshot.Child("LastName").Value.ToString();
        rec.Address = dataSnapshot.Child("Address").Value.ToString();
        rec.ContactNo = dataSnapshot.Child("Contact number").Value.ToString();
        rec.Email = dataSnapshot.Child("EmailAddress").Value.ToString();
        rec.Password = dataSnapshot.Child("Password").Value.ToString();

        idd = rec.ID;
        Console.WriteLine(id.ToString());
        reclist.Add(rec);
    }
}

那是因为数据是从 Firebase 异步加载的,而您的其余代码仍在继续。然后一旦数据被加载,你的 onDataChange 就会被调用。这意味着您共享的代码确实在 onDataChange 内的代码之前运行,并且按预期工作。

解决方案始终相同:任何需要数据库数据的代码都需要在 onDataChange 内部,从那里调用,或者以其他方式同步。

查看这两个 (Android) 示例以获得一些想法: