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.