Как динамически изменить limitToFirst () в базе данных реселлера? - PullRequest
0 голосов
/ 13 июня 2019

Здесь я установил адаптер Firebase в окне переработчика. В котором я использовал Query, как это.

Query sortPost=PostRef.orderByChild("count").limitToFirst(firstTenPost);

В них firstTenPost является переменной типа int. Теперь я хочу динамически изменить его значение некоторым обнаружением.

Давайте возьмем пример, Предположим, у меня есть кнопка за пределами окна просмотра корзины, и если я установил onClickListner на кнопке, то это должно быть так,

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                //here, can i change the value of firstTenPost variable//
                  firstTenPost=firstTenPost+10;


            }
        });

Так что это возможно или нет? если да, то, пожалуйста, объясните

1 Ответ

0 голосов
/ 13 июня 2019

База данных Firebase Realtime не поддерживает офсетные запросы.Таким образом, хотя вы можете сказать «дайте мне первые 10 узлов, соответствующих этим условиям», позже вы не сможете сказать «дайте мне следующие 10 узлов».

Два широких варианта, которые вы должны реализовать для разбивки на страницы:

  1. Используйте постоянно растущий размер страницы.Поэтому, когда вы показываете первую страницу, которую вы limitToFirst(10), затем для страницы 2 вы используете limitToFirst(20) и так далее.

    PostRef.orderByChild("count").limitToFirst(20);
    

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

  2. Модель запросов Firebase основана на якорном документе.Таким образом, хотя вы не можете сказать «пропустить 10 узлов», вы можете указать, что запрос должен начинаться с определенного узла.

    Итак, если вы знаете последний узел первой страницы, вы можете создать aquery, который извлекает этот последний узел страницы 1, а затем следующие 10 узлов.Для этого вам нужно знать значение count (свойство, которое вы заказали) и ключ последнего узла на предыдущей странице.

    Скажем, что последний узел на странице 1 имел число, равное 100, и клавишей -Ldfo731rl вы можете получить узлы для следующей страницы с помощью:

    PostRef.orderByChild("count").startAt(100, "-Ldfo731rl").limitToFirst(10);
    

Как прокомментировал Алекс, тема разбивки на страницы с помощью базы данных Firebase Realtime уже достаточно широко освещена здесь, поэтому я рекомендую вам ознакомиться с некоторыми другими вопросами по теме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...