【问题标题】:How to Get Value from Firebase in Xamarin?如何从 Xamarin 中的 Firebase 获取价值?
【发布时间】:2017-09-15 23:25:06
【问题描述】:

如何使用 Xamarin Firebase.Database Android 从 Firebase 实时数据库获取数据,因为没有可用的文档并且我是新用户。

public void GetSubjects()
{
   Database.Reference.Child("childName").Ref.AddListenerForSingleValueEvent(new ValueEventListener());
}

public class ValueEventListener : Java.Lang.Object, Firebase.Database.IValueEventListener
{

    public void OnCancelled( DatabaseError error )
    {
       throw new NotImplementedException();
    }

    public void OnDataChange( DataSnapshot snapshot )
    {

      //How to Get Value from Snapshot?
      ClassName a = snapshot.GetValue(ClassName) //Gives Error

    }

【问题讨论】:

标签: c# firebase xamarin firebase-realtime-database xamarin.android


【解决方案1】:

看看这个,看看它是否有效......

private void GetData()
{
    FirebaseDatabase
        .Instance
        .Reference
        .Child("Put your child node name here")
        .AddListenerForSingleValueEvent(new DataValueEventListener());
}


class DataValueEventListener: Java.Lang.Object, IValueEventListener
{
    public void OnCancelled(DatabaseError error)
    {
        // Handle error however you have to
    }

    public void OnDataChange(DataSnapshot snapshot)
    {
        if (snapshot.Exists())
        {
            DataModelClass model = new DataModelClass();
            var obj = snapshot.Children;

            foreach (DataSnapshot snapshotChild in obj.ToEnumerable())
            {
                if (snapshotChild.GetValue(true) == null) continue;

                model.PropertyName = snapshotChild.Child("Put your firebase attribute name here")?.GetValue(true)?.ToString();
                model.PropertyName = snapshotChild.Child("Put your firebase attribute name here")?.GetValue(true)?.ToString();

                // Use type conversions as required. I have used string properties only
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    也许你可以试试这个

    internal class DAOFood
    {
        FirebaseClient firebase = new FirebaseClient("YOUR FIREBASE URL");
        public DAOFood()
        {
        }
    
        public async Task<List<Food>> GetAllFoods()
        {
            List<Food> lstFood = (await firebase.
                Child("Food").
                OnceAsync<Food>()).Select(item => new Food
                {
                    FoodId = item.Object.FoodId,
                    FoodName = item.Object.FoodName
                }).ToList();
            return lstFood;
        }
    }
    

    【讨论】:

    • 你能edit你的问题解释一下你做了什么改变以及如何解决这个问题吗?
    猜你喜欢
    • 2016-10-17
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多