【发布时间】:2021-08-23 08:30:25
【问题描述】:
我在 firebase 实时数据库上有一个这样的数据库:
->宠物档案
->Node
->UserEmail
->PetName
->Breed
->Node
->UserEmail
->PetName
->Breed
->Node
->UserEmail
->PetName
->Breed
我想绑定这些数据来创建一个列表视图,但是我只想使用具有相同 UserEmail 的分支(只需在列表视图中向他们显示登录用户的宠物)。然而,屏幕上没有出现任何数据。我认为我的 ObservableCollection 填充错误。能不能给我指点一下。
视图模型:
class MyIDPageViewModel : INotifyPropertyChanged
{
FirebaseHelper firebaseHelper = new FirebaseHelper();
readonly IList<PetProfile> source;
public ObservableCollection<PetProfile> PetInfo { get; private set; }
public IList<PetProfile> EmptyPetInfo { get; private set; }
public MyIDPageViewModel()
{
source = new List<PetProfile>();
CreatePetProfileCollection();
OnPropertyChanged();
}
private async void CreatePetProfileCollection()
{
var petProfiles = await firebaseHelper.GetAllUserPetInfos();
if(petProfiles != null)
{
foreach (var groupitems in petProfiles)
{
source.Add(new PetProfile() { PetName = groupitems.PetName });
}
}
PetInfo = new ObservableCollection<PetProfile>(source);
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}
''' Firebase 助手:
public async Task<List<PetProfile>> GetAllUserPetInfos()
{
var useremail = Preferences.Get("UserSignInEmail", "");
var PetProfiles = await GetAllPetInfos();
await firebase
.Child("PetProfiles")
.OnceAsync<PetProfile>();
return PetProfiles.Where(a => a.UserEmail == useremail).ToList();
}
【问题讨论】:
标签: c# listview xamarin firebase-realtime-database data-binding