我正在构建一个应用程序,它将显示存储在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); }
但上面的代码检索整个视频列表而不是有限的视频.如何实施分页.
解决方法:
下面是我用于分页的代码,它首先显示最新的节点.
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); } }
总结 以上是内存溢出为你收集整理的Firebase安卓分页全部内容,希望文章能够帮你解决Firebase安卓分页所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)