简体   繁体   中英

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

I'm trying to retrieve the data inside of the generated key from firebase real time database using C# language and the retrieve data will show in RecyclerViewer. I try everything but still not showing in RecyclerView.

在此处输入图像描述

This is my code

how to solve this?

THIS IS THE LISTENER:

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);
        }
    }
}

This is the Activit

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();
        }
    }
}

Are you sure you're listening to the correct path in the database? Your code attaches a listener to:

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

But your screenshot shows a node named eventpackage under the root.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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