2017-04-20 63 views
0

嘿,我想按升序我的數據進行排序,但數據是越來越顯示它們是如何存儲在數據庫中的順序:升序排序工作不火力地堡

這是該函數用於對數據進行排序以查找最短時間。

private void getTimeTaken1(final String name) { 
    final DatabaseReference databaseReference1 = FirebaseDatabase.getInstance().getReference().child("users"); 
    final Query query = databaseReference1.orderByChild("timeTaken").limitToLast(10); 

    Log.e(TAG, "getTimeTaken1: " + name); 
    query.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      int rank = 1; 
      for (DataSnapshot userAnswerSnapshot : dataSnapshot.getChildren()) { 
       if (yourTimeArraylist.size() < 10) { 
        if (userAnswerSnapshot.child("questions").child(name).hasChild("timeTaken") 
          && userAnswerSnapshot.child("questions").child(name).child("checkAnswerCorrect").getValue(String.class).equals("1")) { 

         Log.e("", "User " + " " + userAnswerSnapshot.child("questions").child(name).child("timeTaken").getValue().toString()); 


         yourTimeArraylist.add(new PreviousDayRank(userAnswerSnapshot.child("random").getValue(String.class), 
           userAnswerSnapshot.child("name").getValue(String.class), 
           timetaken(userAnswerSnapshot.child("questions").child(name).child("timeTaken").getValue(Integer.class)), 
           rank)); 
         Log.e("", "onDataChange: user" + userAnswerSnapshot.child("questions").child(name).child("timeTaken").getValue()); 
         rank++; 

        } else { 
         yourTimeArraylist.add(new PreviousDayRank(userAnswerSnapshot.child("random").getValue(String.class), userAnswerSnapshot.child("name").getValue(String.class), "-", rankl̥)); 

         rank++; 
        } 

       } 

      } 

      query.removeEventListener(this); 
      databaseReference1.removeEventListener(this); 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

回答

1

您的DatabaseReference是錯誤的。請使用此代碼:

final DatabaseReference databaseReference1 = FirebaseDatabase.getInstance().getReference().child("users").child(userId).child("questions").child(questionNumber); 
final Query query = databaseReference1.orderByChild("timeTaken").limitToLast(10); 

userIdquestionNumber此ID的通過push()方法生成第二個由你。

希望它有幫助。

+0

我想這隻會循環通過一個用戶,而不是所有的人。我需要檢查所有用戶在特定問題ID –

+0

不,它會循環所有用戶,因爲'userId'是一個'變量'。如果你使用例如'userId' - >'bpp2GTcF ...',你只需循環一個用戶。 –

+0

是否是userId節點的Firebase參考? –