c# - 如何从 Firebase 获取 Item Key

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

我想在我的数据库中获取我的数据的项目键,但正如您在 DataSnapshot 函数中看到的那样,我调用尝试获取项目键但它返回空。我正在尝试将所有项目键绑定(bind)到我的数据获取。所以每个获取的项目都应该有它的 key ,这样我就可以使用 key 。但是随后,将获取除项目键之外的所有其他元素。为什么不显示项目 key ?谢谢你的帮助

结构

enter image description here

型号

 public Hero(string uid,string name, string achievment, string history, string quote)
            {
                this.uid = uid;
                this.name = name;
                this.achvievment = achievment;
                this.history = history;
                this.quote = quote;
            }


        public HashMap ToMap()
        {

            HashMap map = new HashMap();
            map.Put("Uid", this.uid);
            map.Put("Name", this.name);
            map.Put("Achievement", this.achvievment);
            map.Put("History", this.history);
            map.Put("Quote", this.quote);
            return map;
        }



        public string Uid

        {
            get { return uid; }
            set { uid = value; }
        }

        public string Name
        {
            get { return name; }
            set { name = value; }

        }

        public int Image

        {
            get { return image; }
            set { image = value; }

        }

        public string Achievement 

        {
            get { return achvievment; }
            set { achvievment = value; }
        }

        public string History

        {
            get { return history; }
            set { history = value; }
        }

        public string Quote

        {
            get { return quote; }
            set { quote = value; }
        }

保存数据

//this is how i save my data which works fine


 mHero.Push().SetValue(new PeaceHero(user.Uid,HeroName.Text, HeroAchv.Text, HeroHistory.Text, HeroQuote.Text).ToMap());

获取数据

public void OnDataChange(DataSnapshot snapshot)
        {
            var items = snapshot.Children?.ToEnumerable<DataSnapshot>();

            HashMap map;
            foreach (DataSnapshot item in items)
            {

                map = (HashMap)item.Value;

                Hero.Add(new Hero(map.Get(item.Key)?.ToString(),map.Get("Name")?.ToString(), map.Get("Achievement")?.ToString(),map.Get("History")?.ToString(),map.Get("Quote")?.ToString()));
                Console.WriteLine("Sending item key" +item.Key.ToString());
                key = item.Key;
            }

            HeroAdapter adapter = new PeaceHeroAdapter(Hero,this);

            Console.Write("The key is "+key);

        }

最佳答案

我不确定 item.Key 应该是什么,但你的 Hero 构造函数应该是:

  Hero.Add(new Hero(map.Get(""Uid"")?.ToString(),map.Get("Name")?.ToString(), map.Get("Achievement")?.ToString(),map.Get("History")?.ToString(),map.Get("Quote")?.ToString()));

关于c# - 如何从 Firebase 获取 Item Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44868162/

相关文章:

android - FirebaseAuth - 兼容问题(java.lang.NoSuchMethodError : No virtual method zzUV())

c# - 将日期时间转换为 yyyy/MM/dd

c# - 如何关闭线程 'Win32 Thread' (0x1bfc) 的日志已退出,代码为 0 (0x0)?

c# - IOwinContext 不包含 GetUserManager() 的定义

c# - 为什么 visual studio 在我更新 Entity Framework 模型时删除了我的类

java - 保留从 Android JNI 调用的 java 方法

java - 如何将多种类型的用户重定向到各自的 Activity?

当我在真实手机上运行我的应用程序时,android studio logcat 不显示崩溃的原因

firebase - 默认 FirebaseApp 在此进程 com.example.example 中未初始化。确保首先调用 FirebaseApp.initializeApp(Context)

android - Firebase 大查询 - 如何从自定义事件表中检索数据