2017-02-28 21 views
2

我是C#Xamarin中的新成員。我在這裏有一個示例Java類(從this tutorial)。我很難在C#中使用xamarin.firebase.database實現ValueEventListener。你想幫我嗎?謝謝。如何在對象DatabaseReference中使用接口IValueEventListener Xamarin.Firebase.Database?

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) { 

     } 
    }); 
} 
} 
+0

感謝@AL編輯 – flo

回答

3

首先:你有一個Xamarin Android綁定爲Firebase Android SDK?如果你不這樣做,你將無法真正遵循任何Java-Android教程,因爲Firebase特定的類/接口將不存在。如果是這樣的話:安裝https://www.nuget.org/packages/Xamarin.Firebase.Database/

如果你 - 實現這樣的接口: (直列實現 - 就像你可以在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()) 
+0

確定@woelliJ。然後,我如何在類MyValueEventListener中使用方法getMessageFromFirebaseUser(String senderUid,String receiverUid)的參數? – flo

+0

我沒有看到如何在您的示例代碼中使用該方法。您可以通過'MyValueEventListener'的構造函數傳遞各種處理程序或任何類型的處理程序。 – woelliJ

相關問題