繁体   English   中英

如何检索我刚刚推送的生成密钥中的数据

[英]How to Retrieve data inside of the generated key that I just push

我正在尝试使用 C# 语言从 firebase 实时数据库中检索生成的密钥内部的数据,检索数据将显示在 RecyclerViewer 中。 我尝试了所有方法,但仍然没有显示在 RecyclerView 中。

在此处输入图像描述

这是我的代码

如何解决这个问题?

这是听众:

using AdamsonsEDApp.Data_Models;
using AdamsonsEDApp.Helpers;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Firebase.Database;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using static AdamsonsEDApp.Listeners.StaffListeners;

namespace AdamsonsEDApp.Listeners
{
    public class PackageInfoListeners : Java.Lang.Object, IValueEventListener
    {
        List<PackageInfo> packageinfoList = new List<PackageInfo>();

        public event EventHandler<PackageInfoDataEventArgs> PackageInfoRetrieved;

        public class PackageInfoDataEventArgs : EventArgs
        {
            public List<PackageInfo> PackageInfo { get; set; }
        }
        public void OnCancelled(DatabaseError error)
        {
            throw new NotImplementedException();
        }

        public void OnDataChange(DataSnapshot snapshot)
        {
            if (snapshot.Value != null)
            {
                var child = snapshot.Children.ToEnumerable<DataSnapshot>();
                packageinfoList.Clear();
                foreach (DataSnapshot infoData in child)
                {
                    PackageInfo info = new PackageInfo();
                    info.packageinfoID = infoData.Key;
                    info.packageinfoName = infoData.Child("infoName").Value.ToString();
                    info.packageinfoQty = infoData.Child("infoQty").Value.ToString();
                    packageinfoList.Add(info);
                }
                PackageInfoRetrieved.Invoke(this, new PackageInfoDataEventArgs { PackageInfo = packageinfoList });
            }
        }
        public void Create()
        {
            DatabaseReference infoRef = AppDataHelper.GetDatabase().GetReference("packageinfo");
            infoRef.AddValueEventListener(this);
        }
    }
}

这是活动

using AdamsonsEDApp.Adapters;
using AdamsonsEDApp.Data_Models;
using AdamsonsEDApp.Fragments;
using AdamsonsEDApp.Listeners;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Support.V7.App;
using Android.Support.V7.Widget;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AdamsonsEDApp.Resources.activities
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = false)]
    public class eventpackageinfo_activity : AppCompatActivity
    {
        string packageinfoname, packageinfoqty;
        TextView infonameText, infoqtyText;
        ImageView /*removeButton,*/ backpackageButton/*, searchButton*/;
        //EditText searchText;
        RecyclerView packageinfoRecyclerView;
        Button addinclusionsButton;

        AddPackageInfoFragment addpackageinfoFragment;
        PackageInfoAdapter packageinfoadapter;

        List<PackageInfo> packageinfoList;
        PackageInfoListeners infoListeners;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.eventpackageinfos);

            infonameText = (TextView)FindViewById(Resource.Id.infonameText);
            infoqtyText = (TextView)FindViewById(Resource.Id.infoqtyText);
            addinclusionsButton = (Button)FindViewById(Resource.Id.addinclusionsButton);
            backpackageButton = (ImageView)FindViewById(Resource.Id.backpackageButton);
            packageinfoRecyclerView = (RecyclerView)FindViewById(Resource.Id.packageinfoRecyclerView);

            
            backpackageButton.Click += BackpackageButton_Click;
            addinclusionsButton.Click += AddinclusionsButton_Click;
            
            RetrieveData();
        }

        private void AddinclusionsButton_Click(object sender, EventArgs e)
        {
        }

        

        private void BackpackageButton_Click(object sender, EventArgs e)
        {
            Intent infointent = new Intent(this, typeof(eventpackage_activity));
            StartActivity(infointent);
        }

        

        private void SetupPackageInfoRecyclerView()
        {
            packageinfoRecyclerView.SetLayoutManager(new Android.Support.V7.Widget.LinearLayoutManager(packageinfoRecyclerView.Context));
            PackageInfoAdapter packageinfoadapter = new PackageInfoAdapter(packageinfoList);

            packageinfoRecyclerView.SetAdapter(packageinfoadapter);
        }

        

        public void RetrieveData()
        {
            infoListeners = new PackageInfoListeners();
            infoListeners.Create();
            infoListeners.PackageInfoRetrieved += InfoListeners_PackageInfoRetrieved;
        }

        private void InfoListeners_PackageInfoRetrieved(object sender, PackageInfoListeners.PackageInfoDataEventArgs e)
        {
            packageinfoList = e.PackageInfo;
            SetupPackageInfoRecyclerView();
        }
    }
}

您确定正在收听数据库中的正确路径吗? 您的代码将侦听器附加到:

DatabaseReference infoRef = AppDataHelper.GetDatabase().GetReference("packageinfo");

但是您的屏幕截图在根目录下显示了一个名为eventpackage的节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM