2016-07-19 3 views
7

Эй, я разрабатываю приложение, которое покажет последние данные, которые я добавляю в базу данных firebase на ежедневной основе. Самые последние данные должны отображаться сверху в recyclerview. Вот как узлы похожи на firebasefirebase android pagination с recyclerview

enter image description here

Давайте предположим, что в настоящее время имеется 100 узлов в базе данных. Когда приложение открывается, оно получает хранилища данных в узлах от 100 до 80. Когда пользователь прокручивает вниз, он получает более свежие данные, хранящиеся в узлах 79-59, и так далее.

Прямо сейчас я могу получить последние 20 узлов с этим запросом

Query jokesQuery = FirebaseDatabase.getInstance().getReference().child("hindi-jokes").orderByKey().limitToLast(20); 

я могу получить ключ узла в позиции 79, если я изменить запрос, чтобы ограничить последние 21 элементов, но и как затем я использую ключ 79-го узла, чтобы получить следующий набор данных узла, т.е. с 79-го по 59-й?

+0

Как сохранить последний извлеченный ключ в памяти и использовать 'startAt (savedKey)'? Вероятно, вы можете комбинировать его с 'limitToLast (20)'. Просто убедитесь, что вы дважды не показываете сохраненную клавишу. – Sunshinator

ответ

11

Вы должны использовать endAt(), так как вы хотите, чтобы последний элемент был возвращен как «самый старый», который вы получили раньше.

DatabaseReference jokesRef = FirebaseDatabase.getInstance().getReference().child("hindi-jokes"); 
Query jokesQuery = jokesRef.orderByKey().endAt(oldestKeyYouveSeen).limitToLast(20); 

oldestKeyYouveSeen известен как якорь. Вам нужно проследить это в своем коде: установите его на ключ самого старого предмета, который вы видели.

Обратите внимание, что это будет как в первом запросе, так и во втором, поэтому вам придется явно исключить его один раз в свой код.

+0

Спасибо, что ответ Франк, именно то, что я искал. Однако я заметил, что вставка содержимого в firebase db удаляет новую строку из текста и помещает весь текст в одну строку. В любом случае, чтобы это не сделать? –

+0

Это звучит как совершенно другой вопрос. Но я бы попытался использовать «\ n» в качестве escape для новых строк. –

+1

hey @FrankvanPuffelen Я хочу знать, как получить 'oldestKeyYouveSeen'? –

Смежные вопросы