1
我有一個Firebase數據庫,看起來像這樣。應當指出的是,我通過獲得劃時代的時間和從零減去創建artCreated
值:OrderByChild()沒有正確排序(或根本沒有排序)
我想獲得最新的提交,但是我還沒有拿到訂單逆轉。這裏是我的代碼:
public class RecentArtRecyclerViewAdapter extends RecyclerView.Adapter<RecentArtRecyclerViewAdapter.ArtworkViewHolder> {
//List<ArtworkModel> artwork;
private Context context;
private DatabaseReference dbReference;
private ChildEventListener mChildEventListener;
ArrayList<String> artworkKeys = new ArrayList<>();
ArrayList<ArtworkModel> artwork = new ArrayList<>();
public RecentArtRecyclerViewAdapter(Context context, DatabaseReference dbReference){
this.context = context;
this.dbReference = dbReference;
dbReference.limitToFirst(100);
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d(TAG, "Artwork added...");
ArtworkModel artworkModel = dataSnapshot.getValue(ArtworkModel.class);
artwork.add(artworkModel);
artworkKeys.add(dataSnapshot.getKey());
notifyItemInserted(artwork.size()-1);
}
我通過在DB查詢,它看起來像:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
final DatabaseReference artRef = databaseReference.child("artwork");
我曾嘗試做這樣的事情得到相反的順序(最近):
dbReference.limitToFirst(100);
dbReference.limitToLast(100);
dbReference.orderByChild("artCreated");
dbReference.orderByChild("artCreated").limitToLast(10);
dbReference.orderByChild("artCreated").limitToFirst(10);
我也嘗試更改artCreated
的值,該值始於一切爲負數(從最小到最大),也做一個負數,其餘正數(最大到最小)並得到相同的結果。關鍵似乎對訂單沒有影響。
沒有任何工作。它始終與它存儲在數據庫中的順序相同。我究竟做錯了什麼。我已經參考了一些關於此的答案,但沒有任何工作適合我。
[Firebase Data Desc Sorting in Android]可能的重複(http://stackoverflow.com/questions/34156996/firebase-data-desc-sorting-in-android) –
@vishnunarayanan我已經引用過並嘗試過它。 – BlackHatSamurai
@BlackHatSamurai可能是由於'artCreated'在我們的數據庫中是'string'類型的嗎? – Droidwala