Java 如何按降序检索firebase数据

Java 如何按降序检索firebase数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,你好,朋友们,你好吗?我正在使用firebase创建墙纸应用程序。现在,从firebase检索的数据必须按降序排列,因此,当添加新墙纸时,它必须位于顶部。这是我的编码。请检查,现在帮助我不知道如何排序此iss。有谁能帮助解决此小问题 package saying.qoute.best.bestquotesaying; import android.content.Intent; import android.content.SharedPreferences; import android.s

你好,朋友们,你好吗?我正在使用firebase创建墙纸应用程序。现在,从firebase检索的数据必须按降序排列,因此,当添加新墙纸时,它必须位于顶部。这是我的编码。请检查,现在帮助我不知道如何排序此iss。有谁能帮助解决此小问题

package saying.qoute.best.bestquotesaying;

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ProgressBar;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import net.danlew.android.joda.JodaTimeAndroid;

import org.joda.time.DateTime;
import org.joda.time.Days;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class WallpapersActivity extends AppCompatActivity {
Toolbar toolbar;

    List<Wallpaper> wallpaperList;
    RecyclerView recyclerView;
    WallpapersAdapter adapter;
    List<Wallpaper>favList;
    DatabaseReference dbWallpapers, dbFavs;
    ProgressBar progressBar;
    private AdView mAdView;
    private  int count=0;
    private static SharedPreferences sharedPreferences;
    @Override


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wallpapers);

        Intent intent = getIntent();
        final String category = intent.getStringExtra("category");
        Toolbar toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle(category);
        setSupportActionBar(toolbar);
        JodaTimeAndroid.init(this);
        AdView adView = new AdView(this);
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        mAdView = findViewById(R.id.adView);

        sharedPreferences=getSharedPreferences("TimeStamp",MODE_PRIVATE);
        final String getcickdate=sharedPreferences.getString("currentdate",null);
        count=sharedPreferences.getInt("count",0);

        if(getcickdate!=null){
            Date date=new Date();
            SimpleDateFormat format=new SimpleDateFormat("dd-MM-yyyy");
            String currnetdate=format.format(date);
            Date date1 = null;
            Date date2 = null;
            try {
                date1 = format.parse(getcickdate);
                date2 = format.parse(currnetdate);
                DateTime dt1 = new DateTime(date1);
                DateTime dt2 = new DateTime(date2);


                if(count==1){
                    if (Days.daysBetween(dt1, dt2).getDays() >= 1) {
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);
                    }
                }

                else if(count==2){
                    if(Days.daysBetween(dt1, dt2).getDays() >=4) {
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);
                    }

                }
                else if(count==3){
                    if(Days.daysBetween(dt1, dt2).getDays()>=6) {
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);

                    }
                }


                else if(count==4){
                    if(Days.daysBetween(dt1, dt2).getDays()>=8) {
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);
                    }


                }
                else if(count>=5){
                    if(Days.daysBetween(dt1, dt2).getDays() >=10) {
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);
                    }




                }



            }

            catch (Exception e) {

                e.printStackTrace();
            }
        }
        else {
            AdRequest adRequest = new AdRequest.Builder().build();
            mAdView.loadAd(adRequest);
        }




        mAdView.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                // Code to be executed when an ad finishes loading.
                mAdView.setVisibility(View.VISIBLE);

            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
                // Code to be executed when an ad request fails.
            }

            @Override
            public void onAdOpened() {
                // Code to be executed when an ad opens an overlay that
                // covers the screen.
            }

            @Override
            public void onAdClicked() {

            }

            @Override
            public void onAdLeftApplication() {
                count++;
                Date date=new Date();
                SimpleDateFormat format=new SimpleDateFormat("dd-MM-yyyy");
                String currnetdate=format.format(date);
                sharedPreferences=getSharedPreferences("TimeStamp",MODE_PRIVATE);
                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString("currentdate",currnetdate);
                editor.putInt("count",count);
                editor.commit();
                // Toast.makeText(ALLVERSE.this, "i am clicked", Toast.LENGTH_LONG).show();

            }

            @Override
            public void onAdClosed() {
                // Code to be executed when the user is about to return
                // to the app after tapping on an ad.

                //Toast.makeText(ALLVERSE.this, "ad closed", Toast.LENGTH_LONG).show();
            }
        });
package saying.qoute.best.bestquotesaying;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.widget.ProgressBar;
导入com.google.android.gms.ads.AdListener;
导入com.google.android.gms.ads.AdRequest;
导入com.google.android.gms.ads.AdSize;
导入com.google.android.gms.ads.AdView;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入net.danlew.android.joda.JodaTimeAndroid;
导入org.joda.time.DateTime;
导入org.joda.time.Days;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
公共类墙纸活动扩展了AppCompatActivity{
工具栏;
列表列表;
回收视图回收视图;
墙纸适配器;
列表列表;
数据库参考数据库壁纸;
ProgressBar ProgressBar;
私人顾问马德维尤;
私有整数计数=0;
私有静态SharedReferences SharedReferences;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_壁纸);
Intent=getIntent();
最终字符串类别=intent.getStringExtra(“类别”);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
工具栏.设置标题(类别);
设置支持操作栏(工具栏);
JodaTimeAndroid.init(this);
AdView AdView=新AdView(本);
adView.setAdSize(AdSize.BANNER);
咨询意见。setAdUnitId(“ca-app-pub-3940256099942544/630978111”);
mAdView=findviewbyd(R.id.adView);
SharedReferences=GetSharedReferences(“时间戳”,模式_PRIVATE);
最后一个字符串getcickdate=SharedReferences.getString(“currentdate”,null);
count=SharedReferences.getInt(“count”,0);
if(getcickdate!=null){
日期=新日期();
SimpleDateFormat=新的SimpleDateFormat(“dd-MM-yyyy”);
字符串currnetdate=format.format(日期);
Date date1=null;
日期2=空;
试一试{
date1=format.parse(getcickdate);
date2=format.parse(currentDate);
DateTime dt1=新的DateTime(date1);
DateTime dt2=新的DateTime(date2);
如果(计数=1){
if(介于(dt1,dt2)之间的天数.daysbeween.getDays()>=1){
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
否则如果(计数=2){
if(介于(dt1、dt2)之间的天数.daysbeween.getDays()>=4){
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
否则如果(计数=3){
if(介于(dt1、dt2)之间的天数).getDays()>=6){
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
否则如果(计数=4){
if(介于(dt1、dt2)之间的天数.daysbeween.getDays()>=8){
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
否则如果(计数>=5){
if(介于(dt1、dt2)之间的天数.daysbeween.getDays()>=10){
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
}
捕获(例外e){
e、 printStackTrace();
}
}
否则{
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
setAdListener(新的AdListener(){
@凌驾
已加载的公共无效(){
//ad完成加载时要执行的代码。
mAdView.setVisibility(View.VISIBLE);
}
@凌驾
在失败的TOLOAD上公开无效(int错误代码){
//ad请求失败时要执行的代码。
}
@凌驾
公开作废{
//当广告打开覆盖时要执行的代码
//覆盖屏幕。
}
@凌驾
已单击()的公共无效项{
}
@凌驾
onAdLeftApplication()上的公共无效{
计数++;
日期=新日期();
SimpleDateFormat=新的SimpleDateFormat(“dd-MM-yyyy”);
字符串currnetdate=format.format(日期);
SharedReferences=GetSharedReferences(“时间戳”,模式_PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
editor.putString(“currentdate”,currentdate);
编辑:putInt(“count”,count);
commit();
/
        favList = new ArrayList<>();
        wallpaperList = new ArrayList<>();
        recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new WallpapersAdapter(this, wallpaperList);

        recyclerView.setAdapter(adapter);

        progressBar = findViewById(R.id.progressbar);
        dbWallpapers = FirebaseDatabase.getInstance().getReference("images")
                .child(category);


        if (FirebaseAuth.getInstance().getCurrentUser() != null) {
            dbFavs = FirebaseDatabase.getInstance().getReference("users")
                    .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                    .child("favourites")
                    .child(category);
            fetchFavWallpapers(category);
        } else {
            fetchWallpapers(category);
        }

    }

    private void fetchFavWallpapers(final String category) {
        progressBar.setVisibility(View.VISIBLE);
        dbFavs.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                progressBar.setVisibility(View.GONE);
                if (dataSnapshot.exists()) {
                    for (DataSnapshot wallpaperSnapshot : dataSnapshot.getChildren()) {

                        String id = wallpaperSnapshot.getKey();
                        String title = wallpaperSnapshot.child("title").getValue(String.class);
                        String desc = wallpaperSnapshot.child("desc").getValue(String.class);
                        String url = wallpaperSnapshot.child("url").getValue(String.class);
                        Wallpaper w = new Wallpaper(id, title, desc, url, category);
                        favList.add(w);
                    }
                }
                fetchWallpapers(category);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

    private void fetchWallpapers(final String category) {
        progressBar.setVisibility(View.VISIBLE);
        dbWallpapers.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                progressBar.setVisibility(View.GONE);
                if (dataSnapshot.exists()) {
                    for (DataSnapshot wallpaperSnapshot : dataSnapshot.getChildren()) {

                        String id = wallpaperSnapshot.getKey();
                        String title = wallpaperSnapshot.child("title").getValue(String.class);
                        String desc = wallpaperSnapshot.child("desc").getValue(String.class);
                        String url = wallpaperSnapshot.child("url").getValue(String.class);

                        Wallpaper w = new Wallpaper(id, title, desc, url, category);

                        if (isFavourite(w)) {
                            w.isFavourite=true;

                        }

                        wallpaperList.add(w);
                    }
                    adapter.notifyDataSetChanged();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

    private boolean isFavourite(Wallpaper w) {
        for (Wallpaper f: favList) {
            if (f.id.equals(w.id)) {
                return true;
            }
        }
        return false;
    }



}