Анимированные картинки

Я создаю приложение, которое покажет видео, хранящееся на firebase. Список видеороликов должен быть разбит на страницы, получая последние 20 видео за раз.

Введите описание изображения здесь

Вот код, который, как я думал, будет работать

private void getVideos() { Query videosQuery = FirebaseUtil.getVideosRef(); videosQuery.startAt(0); videosQuery.endAt(1); ChildEventListener videosChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { String date = dataSnapshot.getKey(); String temp = date; } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { Log.d(tag, "database error"); } }; ValueEventListener videoValueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String date = dataSnapshot.getKey(); String temp = date; long count = dataSnapshot.getChildrenCount(); String value = dataSnapshot.getValue().toString(); temp = value; } @Override public void onCancelled(DatabaseError databaseError) { Log.d(tag, "database error"); } }; // videosQuery.addChildEventListener(videosChildEventListener); videosQuery.addValueEventListener(videoValueEventListener); } 

Но выше код извлекает весь список видео, а не ограниченные видео. Как можно выполнить разбиение на страницы.

  mPageEndOffset = 0; mPageLimit = 10; mPageEndOffset += mPageLimit; deviceListQuery = mDatabase.child("users") .orderByChild("id").limitToFirst(mPageLimit).startAt(mPageEndOffset); deviceListQuery.addValueEventListener(YourActivity.this); 

Ниже приведен код, который я использую для разбивки на страницы, который показывает последний узел.

  public void getImages() { Query imagesQuery = FirebaseDatabase.getInstance().getReference().child("englishDps").child(mChildName).orderByKey().limitToLast(21); ChildEventListener childEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Image image = dataSnapshot.getValue(Image.class); image.setNodeKey(dataSnapshot.getKey()); mTempImages.add(image); if (mTempImages.size() == 21) { mLastKey = mTempImages.get(0).getNodeKey(); Collections.reverse(mTempImages); mTempImages.remove(mTempImages.size() - 1); mImages.addAll(mTempImages); setAdapter(); } } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { if (isAdded()) { Toast.makeText(getActivity(), "Problem loading more images...", Toast.LENGTH_LONG).show(); } } }; imagesQuery.addChildEventListener(childEventListener); } @Override public void getMoreImages() { if (!mGettingMoreImages) { mGettingMoreImages = true; Query imagesQuery = FirebaseDatabase.getInstance().getReference("englishDps").child(mChildName).orderByKey().endAt(mLastKey).limitToLast(21); ChildEventListener childEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Image image = dataSnapshot.getValue(Image.class); image.setNodeKey(dataSnapshot.getKey()); mMoreImages.add(image); if (mMoreImages.size() == 21) { mLastKey = mMoreImages.get(0).getNodeKey(); Collections.reverse(mMoreImages); mMoreImages.remove(mMoreImages.size() - 1); mImages.addAll(mMoreImages); mMoreImages.clear(); mGettingMoreImages = false; mImagesAdapter.notifyDataSetChanged(); return; } if (mLastKey.equalsIgnoreCase(image.getNodeKey())) { Collections.reverse(mMoreImages); mImages.addAll(mMoreImages); mMoreImages.clear(); mGettingMoreImages = false; mImagesAdapter.onNoMoreImages(); ; mImagesAdapter.notifyDataSetChanged(); } } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { if (isAdded()) { Toast.makeText(getActivity(), "Problem loading more images...", Toast.LENGTH_LONG).show(); } } }; imagesQuery.addChildEventListener(childEventListener); } } 

Вы хотите использовать методы limitToFirst / limitToLast для получения ограниченного количества результатов.

 videosQuery.orderByKey().limitToFirst(20) 

https://www.firebase.com/docs/web/api/query/limittofirst.html

Вы должны действительно рассмотреть возможность изменения соглашения об именах ваших видеороликов с включением ведущих 0 (т. Е. Video01, video02 … video10, video11), потому что приведенный выше код отобразит их точно так же, как вы их используете выше (что, я полагаю, не соответствует порядку?)

Кроме того, если вы добавляете видео через Java, вы можете просто позволить firebase создавать уникальные объекты с помощью push (). Уникальные генерируются таким образом, что они будут сортироваться хронически, что звучит так, как вам подойдет, чтобы захватить самые последние видео (добавленные?).

https://www.firebase.com/docs/web/api/firebase/push.html

Intereting Posts
GetWidth () и getHeight возвращают ноль после onMeasure () (определенные устройства) Разработка Android: ddms из командной строки, не видящих устройств Требуется ли каждому разработчику собственный ключ Google Map Api? Почему XML не HTML используется для пользовательского интерфейса в Android progrmming? Нарисуйте текст или изображение в потоке камеры (GLSL) Использование datetime в SQLite для получения значений в этом месяце и в прошлом месяце Как я могу извлечь необработанную строку JSON из объекта OkHttp Response? Приложение умирает с «Сигналом отправки», но никаких исключений или другой информации Android onConfigurationChanged: как сохранить и восстановить стек фрагментов? Xamarin Android SetBackgroundDrawable устарел, но не SetBackground () Google Analytics SDK v4 Отслеживание кампаний Отправка по электронной почте Нет данных Показать прозрачную активность в Android? Как изменить положение счетчика в соответствии с положением другого счетчика в двух разных действиях База данных Sqlite onUpgrade () не вызвана Как настроить Proguard для сохранения статических методов с разными временами возврата