我目前正在使用FirebaseRecyclerAdapter從Firebase數據庫中檢索數據,並且我已經非常瞭解如何按照需要的順序檢索數據。脫機排序的FirebaseRecyclerAdapter
爲了避免重複和簡化數據庫維護,我想爲數據庫條目添加一個鍵,使我能夠根據該鍵返回查詢。我原本是存儲兩次數據。一次只供所有人查看,一次如果用戶加入某個組(在groupName下)。
返回基於組的查詢,我原來的搜索結果如下:
databaseReference.child(groupName).child("exerciseId"+mExerciseId).orderByChild(sortOrder).limitToFirst(100);
但我相信的重複可以通過添加鍵「組」我的崗位是可以避免的。 (當用戶切換組時,它也使維護更容易)。
「本集團」數據庫查詢現已成爲:
databaseReference.child("exerciseId"+mExerciseId).orderByChild("group").equalTo(groupName);
一切都很好,只是數據不再分類按「中將sortOrder」。由於firebase不支持多種排序標準,我相信我的解決方案在於脫機排序。
那麼,如何排序適配器脫機?
我的適配器是非常標準:
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.item_post, PostViewHolder.class, dataQuery)
{
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position)
{
final DatabaseReference postRef = getRef(position);
// Bind Post to ViewHolder, setting OnClickListener for the star button
viewHolder.bindToPost(model, position, postRef.getKey(), null);
}
mRecycler.setAdapter(mAdapter);
}
我在帖子中實現媲美,問題出在哪裏存儲數據,這樣我可以在這種方式把它傳遞給Collections.sort() :
private List<Post> mPosts = new ArrayList<>();
mPosts.add(model);
Collections.sort(mPosts, Post.Comparators.ALLTIME);
感謝您的快速響應。它的工作沒有簡化,所以當我的其他20個項目完成時,我會回到它;-)在即將推出的Firebase功能列表中,鏈接查詢或鏈接排序標準是什麼?如果顯示排名前100的排行榜結果,然後將用戶添加到列表中(如果他們尚未顯示),或者顯示50當前用戶的任何一方,那就太好了。所有不錯的增強功能,但不是必需的。再次感謝。 –
我猜想這可能更多,我可以基於單個查詢填充自己的List,然後對其進行排序/添加,然後在回收站查看所有結果。不知道我如何根據Firebase查詢填充列表 - 除非您有一個良好示例的鏈接,否則我將不得不進行搜索? –