J'aimerais utiliser les méthodes startAt() et endAt() mais je ne comprends pas parfaitement comment elles fonctionnent.

En supposant que j'ai la base de données actuelle

"users" : {
    "someUser1" : {
      "email" : "oneEmail",
      "someOtherInfo" : "OneInfo",
      "username" : "someUser1"
    }
    "someUser2" : {
      "email" : "twoEmail",
      "someOtherInfo" : "twoInfo",
      "username" : "someUser2"
    },
    "someUser3" : {
      "email" : "threeEmail",
      "someOtherInfo" : "threeInfo",
      "username" : "someUser3"
    },
    "someUser4" : {
      "email" : "fourEmail",
      "someOtherInfo" : "fourInfo",
      "username" : "someUser4"
    }
  }

Maintenant, ces données seront ajoutées à un RecyclerView. Donc, au départ, je ne veux obtenir que les 2 premiers éléments (someUser1 et someUser2), puis lorsque l'utilisateur fait défiler vers le bas du recyclerView, il obtient les 2 autres éléments.

Le recyclerView est entièrement configuré et fonctionne, j'ai juste besoin d'obtenir les éléments de la base de données maintenant mais je ne comprends pas comment les 2 méthodes fonctionnent, si je l'ai fait:

users = myDB.getReference("users").orderByChild("email").startAt(0).endAt(2);

Cela suffirait-il pour obtenir les 2 premiers éléments?

Merci

0
TerribleCoderSad 17 janv. 2017 à 06:46

2 réponses

Meilleure réponse

S'il vous plaît voir ci-dessous ci-joint:

enter image description here

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance()
                .getReference();
DatabaseReference mRef = mDatabaseReference.child("order")

node.limitToLast(2).orderByChild("timestamp")
                   .addValueEventListener(mValueEventListener);

private ValueEventListener mTypingValueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            Log.i(TAG, "onDataChange: " + snapshot.getValue());
            // Your code
        }

        @Override
        public void onCancelled(DatabaseError error) {
            Log.w(TAG, "onCancelled: " + error.getMessage());
        }
    };
0
Charitha Ratnayake 17 janv. 2017 à 04:29

Vous pouvez le faire par limitToLast(), voici le code:

DatabaseReference node;

node.limitToLast(AppConstants.SIZE)
                    .orderByChild(YourOwnSortMethod)
                    .addValueEventListener(mValueEventListener);

private ValueEventListener mTypingValueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            Log.i(TAG, "onDataChange: " + snapshot.getValue());
            // Your code
        }

        @Override
        public void onCancelled(DatabaseError error) {
            Log.w(TAG, "onCancelled: " + error.getMessage());
        }
    };

Qu'est-ce que cela fait,

Ensemble de données = A, C, B, E, F

orderByChild (croissant) = A, B, C, E, F

limitToLast (2) = E, F

2
Charitha Ratnayake 17 janv. 2017 à 04:15