2017-09-01 2 views
1

Ich implementiere Firebase und DataSnapshot gebe null an benutzerdefiniertes Java-Objekt zurück. Ich habe versucht, dieses Problem zu lösen, indem ich eine Antwort mit dieser Seite auch befolge, aber ich weiß nicht, wo das genaue Problem in meinem Code ist. Hier Ich füge meine screenshot von firebase database so helfen Sie mir freundlicherweise enter image description hereAndroid Firebase DataSnapshot-Klasse, die null an benutzerdefiniertes Java-Objekt zurückgibt

Unten ist mein model dieses Problem zu beheben.

 public class ChatModel { 

    private String messege; 
    private String user; 
    private int intType; 

    public ChatModel(){} 

    public ChatModel(String messege, String user, int intType) { 
     this.messege = messege; 
     this.user = user; 
     this.intType = intType; 
    } 


    public String getMessege() { 
     return messege; 
    } 

    public void setMessege(String messege) { 
     this.messege = messege; 
    } 

    public String getUser() { 
     return user; 
    } 

    public void setUser(String user) { 
     this.user = user; 
    } 

    public int getIntType() { 
     return intType; 
    } 

    public void setIntType(int intType) { 
     this.intType = intType; 
    } 
} 

und hier ist meine activity code.

DatabaseReference messagesReference = reference1.child("messages/"+ UserDetails.username + "_" + UserDetails.chatWith); 
     Log.e("messages URL "," ==>"+messagesReference); 

      messagesReference .addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

       Log.e("messages Referencev "," ==>"+dataSnapshot.toString()); 

       ChatModel map = dataSnapshot.getValue(ChatModel.class); 
       String message = map.getMessege(); 
       String userName = map.getUser(); 

       Log.e("message "," ==>"+message); // Here I am getting null value 

      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

und logcat zeigen Nachricht wie folgt.
==> DataSnapshot {key = -KslrqBPRMNKkWQO15h_, value = {message = Hallo Dies ist Sakib, user = Sakib}}

+0

In meinem Code "message" Variable Nullwert zurückgeben –

Antwort

3

Ihre Schlüssel sind Mismatch Deshalb ist es Null-Wert überprüfen Sie Ihre Screenshot und Ihre ChatModel Klasse Rückkehr , entfernen Sie str aus Ihren ChatModel-Klassenvariablen und generieren Sie erneut Getter Setter

Dies könnte Ihnen helfen.

public class ChatModel { 

    private String messege; 
    private String user; 
    private int intType; 
    // TODO generate getter setter again 
} 

können Sie entweder Werte über Karte erhalten und

Map<String,String> map=(Map<String,String>)dataSnapshot.getValue(); 
String message = map.get("message"); 
String userName = map.get("user"); 
Log.e("message "," ==>"+message); 
+0

Vielen Dank für die Hilfe, aber es zeigen Fehler wie *** DatabaseException: Kann Objekt des Typs java.lang.String nicht konvertieren, um firebasechat.com.firebicechat .Model.ChatModel *** –

+0

@SakibSyed Ich habe die Änderungen in meiner Antwort jetzt versuchen – akhilesh0707

+0

@SakibSyed hast du es versucht? – akhilesh0707

0

Versuchen Sie Ihr Modell

private String message; 
public String getMessage(){ return message;} 

Ich hatte das gleiche Problem zu benennen und es funktionierte, nachdem ich die Eigenschaften genannt genau wie sie in der Firebase-Datenbank benannt sind.

+0

@ Ben Denger Ich habe nur *** Nachricht *** in Modell umbenennen, aber immer noch zeigt es, dass *** E/Nachricht: ==> null *** in 'logcat' –

+0

gibt es nicht ein Kind fehlt? Sie fügen einen Listener für den Knoten "sakib_testing" hinzu, ich denke, Sie müssen die Datasnapshot.getchildren() iterieren und dann in das Chatmodel-Objekt konvertieren –

Verwandte Themen