Мой вопрос, может быть, глупый, я прочитал документацию, но у меня нет решения по моему вопросу. Когда я использую 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
ответ
Так вы получаете последние 15 цифр, когда вы установите значение до 15, измените значение limitToLast
на -1
, чтобы получить последнее значение Firebase. Измените свой код ниже.
messagesListener = FBMessagesRef.limitToLast(-1).addChildEventListener(new ChildEventListener(),
Официальная документация пожарной базы гласит, что если предельное значение меньше, чем количество элементов в базе данных, тогда оно будет читать все элементы в базе данных. Понятно, я думаю.
limitToLast (предел) возвращает firebase.database.Query
Создает новый объект запроса ограничивается до последнего определенного числа детей.
Метод limitToLast() используется для установки максимального количества детей для синхронизации для данного обратного вызова. Если мы установим предел 100, мы получим , изначально получим только до 100 дочерних событий. Если в нашей базе данных осталосьболее 100 сообщений, то событие child_added будет пожар для каждого сообщения. Однако, если у нас есть более 100 сообщений, мы получим только событие child_added для последних 100 упорядоченных сообщений. Как изменить элементов, мы получим child_removed события для каждого элемента, который выпадает из активного списка, так что общее число остается на 100.
, так как я могу избежать такого поведения, так что оно не порвало с порядком сообщений? – Andrea
Вы можете создать arraylist всех предметов и сделать opreations над массивом. См. Https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseArray.java в качестве официального примера массива firebase с помощью childeventlistener. – uguboz
Если текущие ответы не помогут вам, отредактируйте ваш вопрос, чтобы включить [минимальный код, воспроизводящий проблему] (http://stackoverflow.com/help/mcve). Прямо сейчас у нас нет способа узнать, как реализован ваш «ChildEventListener», что, вероятно, является частью проблемы. –
У меня такая же проблема. Есть ли какое-нибудь решение? – starrystar