c# - 如何在对象 DatabaseReference Xamarin.Firebase.Database 中使用接口(interface) IValueEventListener?

标签 c# firebase xamarin firebase-realtime-database

我是 C# Xamarin 新手。我这里有一个示例 Java 类(来自 this tutorial )。对我来说,使用 xamarin.firebase.database 在 C# 中实现 ValueEventListener 很困难。你愿意帮助我吗?谢谢。

public class ChatInteractor implements ChatContract.Interactor {
    private static final String TAG = "ChatInteractor";

    @Override
    public void sendMessageToFirebaseUser(final Context context, final Chat chat, final String receiverFirebaseToken) {

        final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
    databaseReference.child(Constants.ARG_CHAT_ROOMS).getRef().addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

@Override
public void getMessageFromFirebaseUser(String senderUid, String receiverUid) {

    final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

    databaseReference.child(Constants.ARG_CHAT_ROOMS).getRef().addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
}

最佳答案

首先:您是否有适用于 Firebase Android SDK 的 Xamarin Android 绑定(bind)?如果不这样做,您就无法真正遵循任何 Java-Android 教程,因为 Firebase 特定的类/接口(interface)将不存在。如果是这种情况:安装https://www.nuget.org/packages/Xamarin.Firebase.Database/

如果你这样做 - 实现这样的接口(interface): (内联实现 - 就像您可以在 java 中所做的那样;并且在您的示例中完成 - C# 中不支持。因此您必须创建一个常规类)

   public class MyValueEventListener : Java.Lang.Object, Firebase.Database.IValueEventListener
    {

        public void OnCancelled(DatabaseError error)
        {
            throw new NotImplementedException();
        }

        public void OnDataChange(DataSnapshot snapshot)
        {
            throw new NotImplementedException();
        }

    }

并将其作为事件监听器传递

DatabaseReference databaseReference = FirebaseDatabase.Instance.Reference;
        databaseReference.Child(Constants.ARG_CHAT_ROOMS).Ref.AddListenerForSingleValueEvent(new MyValueEventListener())

关于c# - 如何在对象 DatabaseReference Xamarin.Firebase.Database 中使用接口(interface) IValueEventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499066/

相关文章:

c# - 如何避免 ViewBag(或 ViewData)以支持模型?

c# - 将填充添加到单元格时,DataGrid 行选择不起作用

javascript - 使用 Firebase Push 键作为第二次推送中的键

visual-studio - Visual Studio 2019中的Xamarin Live Player

c# - 检查 NSURLError.Cancelled

c# - 如何从 TableView 传递数据? (Xamarin.iOS)

c# - WPF 图像源绑定(bind)有时有效有时无效

c# - 如何将项目添加到 ObservableCollection?

Firebase 模拟读取被拒绝

android - 在 Debug模式下禁用新的 Firebase Crashlytics