如何使用orderByKey()以降序而不是升序#Askfirebase [英] How to use orderByKey() in descending order instead of ascending #Askfirebase
问题描述
我试图通过最近的侦察来订购FragmentStatePagerAdapter中的选项卡。将项目插入到FragmentStatePagerAdapter并使其正常刷新似乎非常困难。因此,如果Firebase只是按降序而不是按升序(最近的第一个)递给我的密钥,那么不是这样做,这会让我的生活更轻松。如果这是不可能的,请考虑这个功能请求
orderByKeyDescending()
:)任何帮助将不胜感激!谢谢! 这是我期望的侦听器BTW:
scoutRef。 orderByKeyDescending()。addChildEventListener(new ChildEventListener(){
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){
mSectionsPagerAdapter.mKeyPosition.add(dataSnapshot.getKey());
mSectionsPagerAdapter.notifyDataSetChanged();
}
$ b $ @覆盖
public void onChildChanged(DataSnapshot dataSnapshot,String s){
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot){
$ b @Override
public void onChildMoved(DataSnapshot dataSnapshot,字符串s){
}
@覆盖
public void onCancelled(DatabaseError databaseError){
FirebaseCrash.repo室温(databaseError.toException());
}
});
非常感谢 $ b $ p $ t $; $您无法使用Firebase以降序获取数据,期。你必须在客户端执行。
客户端的解决方案是 以下是完整的适配器: 以及Firebase侦听器: Hi David and the Firebase team,
I am trying to order the tabs in a FragmentStatePagerAdapter by most recent "scout." It seems really hard to insert an item into a FragmentStatePagerAdapter and get it to refresh properly. So instead of doing that, it would make my life way easier if Firebase just gave me the keys in descending order instead of ascending (most recent first). If this is not possible, consider this a feature request for Here is my desired listener BTW:
Huge thanks to wisemann!!! TL;DR You can't get data in descending order with Firebase, period. You have to do it on the client side. The solution on the client side for me was to to Here is the full adapter: And the Firebase listener:
这篇关于如何使用orderByKey()以降序而不是升序#Askfirebase的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! return POSITION_NONE(-2)
在 getItemPosition
中。如果你想更高性能,你可以阅读更多关于标签在这里: ViewPager PagerAdapter不更新
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
List< String> mKeyPosition = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public int getItemPosition(Object object){
return POSITION_NONE;
}
@Override
public Fragment getItem(int position){
// getItem被调用来实例化给定页面的片段。
//返回一个PlaceholderFragment(定义为下面的静态内部类)。
返回PlaceholderFragment.newInstance(mKeyPosition.get(position));
@Override
public int getCount(){
return mKeyPosition.size();
$ b @Override
public CharSequence getPageTitle(int position){
returnSCOUT+(getCount() - position);
public void add(String key){
mKeyPosition.add(0,key);
notifyDataSetChanged();
}
}
pre $ public $ updateScouts(finalScrollActivity.SectionsPagerAdapter mSectionsPagerAdapter){
scoutReference.addChildEventListener(new ChildEventListener(){
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){
mSectionsPagerAdapter.add(dataSnapshot.getKey());
}
$ b $ @覆盖
public void onChildChanged (DataSnapshot dataSnapshot,String s){
// ...
}
$ b $ @覆盖
public void onChildRemoved(DataSnapshot dataSnapshot){
// ...
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot,String s){
// ...
}
@Override
public void onCancelled(DatabaseError databaseError){
Fire baseCrash.report(databaseError.toException());
}
});
}
orderByKeyDescending()
:) Any help would be appreciated! Thanks!scoutRef.orderByKeyDescending().addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mSectionsPagerAdapter.mKeyPosition.add(dataSnapshot.getKey());
mSectionsPagerAdapter.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) {
FirebaseCrash.report(databaseError.toException());
}
});
return POSITION_NONE (-2)
in getItemPosition
. If you want to be more performant, you can read more about tags here: ViewPager PagerAdapter not updating the View.public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
List<String> mKeyPosition = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(mKeyPosition.get(position));
}
@Override
public int getCount() {
return mKeyPosition.size();
}
@Override
public CharSequence getPageTitle(int position) {
return "SCOUT " + (getCount() - position);
}
public void add(String key) {
mKeyPosition.add(0, key);
notifyDataSetChanged();
}
}
public void updateScouts(final CurrentScoutActivity.SectionsPagerAdapter mSectionsPagerAdapter) {
scoutReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mSectionsPagerAdapter.add(dataSnapshot.getKey());
}
@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) {
FirebaseCrash.report(databaseError.toException());
}
});
}