2016-09-30 2 views
4

Мой вопрос, может быть, глупый, я прочитал документацию, но у меня нет решения по моему вопросу. Когда я использую limitToLast, чтобы получить последние 15 сообщений (скажем, от 5 до 20), и если я удалю 20-е сообщение, childListener вернет мне такие сообщения (5-6-7-8-9-10-11-12- 13-14-15-16-17-18-19-4) ... Как вы можете видеть, последний элемент - номер 4. Код выглядит так:
messagesListener = FBMessagesRef.limitToLast(15).addChildEventListener(new ChildEventListener(), как я могу его исправить и не получить 4-й пунктFirebase limitToLast Query

+0

Если текущие ответы не помогут вам, отредактируйте ваш вопрос, чтобы включить [минимальный код, воспроизводящий проблему] (http://stackoverflow.com/help/mcve). Прямо сейчас у нас нет способа узнать, как реализован ваш «ChildEventListener», что, вероятно, является частью проблемы. –

+0

У меня такая же проблема. Есть ли какое-нибудь решение? – starrystar

ответ

0

Так вы получаете последние 15 цифр, когда вы установите значение до 15, измените значение limitToLast на -1, чтобы получить последнее значение Firebase. Измените свой код ниже.

messagesListener = FBMessagesRef.limitToLast(-1).addChildEventListener(new ChildEventListener(), 
0

Официальная документация пожарной базы гласит, что если предельное значение меньше, чем количество элементов в базе данных, тогда оно будет читать все элементы в базе данных. Понятно, я думаю.

limitToLast (предел) возвращает firebase.database.Query

Создает новый объект запроса ограничивается до последнего определенного числа детей.

Метод limitToLast() используется для установки максимального количества детей для синхронизации для данного обратного вызова. Если мы установим предел 100, мы получим , изначально получим только до 100 дочерних событий. Если в нашей базе данных осталосьболее 100 сообщений, то событие child_added будет пожар для каждого сообщения. Однако, если у нас есть более 100 сообщений, мы получим только событие child_added для последних 100 упорядоченных сообщений. Как изменить элементов, мы получим child_removed события для каждого элемента, который выпадает из активного списка, так что общее число остается на 100.

+0

, так как я могу избежать такого поведения, так что оно не порвало с порядком сообщений? – Andrea

+0

Вы можете создать arraylist всех предметов и сделать opreations над массивом. См. Https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseArray.java в качестве официального примера массива firebase с помощью childeventlistener. – uguboz