2017-03-17 208 views
0

我試圖讓從火力地堡的值。的Android火力地堡檢索值

我用這一段代碼來獲取,但所有的方法,我呼籲score1返回null。

private void onSignedInInitialize(String username) { 
    mUsername = username; 
    final DatabaseReference reference = mFirebaseDatabase.getReference(); 
    Query query = reference.child("scores").orderByChild("username").equalTo(mUsername); 
    query.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // Get Post object and use the values to update the UI 
      Score scores1 = dataSnapshot.getValue(Score.class); 
      Log.d(TAG, " scores1 " + scores1 + " datasnapshot to String " + dataSnapshot.getValue().toString()); 
      Log.d(TAG, " user " + scores1.getUsername()); 
      Log.d(TAG, " user " + scores1.getUsername()); 
      scoresTextView.setText(scores1.getScore()); 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

我的火力地堡結構看起來像this

我使用他們的文檔(帶後級)的例子,也搜索在谷歌,但我無法找到我怎麼能得到的分數值。 謝謝你的回答。

這是分數級

public class Score { 

    private String username; 
    private String score; 

    public Score() { 

    } 

    public Score(String username, String score) { 
     this.username = username; 
     this.score = score; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public String getScore() { 
     return score; 
    } 

    public void setScore(String score) { 
     this.score = score; 
    } 

} 
+0

張揚的變量,然後再試 –

+0

它是相同的,仍空 –

+0

沒有人知道如何獲得價值? –

回答

0

隨着數據庫的形象示人,這是Score實例數據庫節點孩子的位置scores。如下所示更新您的代碼。

第二個問題是數據庫中的score是整數,而不是類,因爲您的類需要Score。您必須更新數據庫包含字符串或更改Score處理score爲整數。此外,您Score類缺少username setter方法。

query.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Get Post object and use the values to update the UI 
     if (dataSnapshot.exists()) { 
      for (DataSnapshot snap : dataSnapshot.getChildren()) { 
       Score scores1 = snap.getValue(Score.class); 
       Log.d(TAG, " scores1 " + scores1 + " datasnapshot to String " + dataSnapshot.getValue().toString()); 
       Log.d(TAG, " user= " + scores1.getUsername()); 
       Log.d(TAG, " score= " + scores1.getScore()); 
       scoresTextView.setText(scores1.getScore()); 
      } 
     } else { 
      Log.e(TAG, "onDataChange: NO DATA"); 
     } 
    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.e(TAG, "onCancelled: " + databaseError.getMessage()); 
    } 
}); 
+0

謝謝qbix,現在的工作。 –

+0

忘記查看數據庫,您是對的。如果你不想推送數據,我認爲setter方法不是必需的 –