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