我有一个Firebase数据库,看起来像这样。应该注意的是,我通过获取纪元时间并从零中减去它来创建artCreated
值:
我正在尝试获取最新提交的内容,但我永远无法撤消订单。这是我的代码:
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
的值,该值以负数(从最小到最大)开始,并且还做一个负数,其余为正(从最小到最小)并且得到相同的值结果。 artCreated
密钥似乎对订单没有影响。
没有任何工作。它始终与存储在数据库中的顺序相同。我究竟做错了什么。我已就此提出了一些答案,但没有任何对我有用。
答案 0 :(得分:0)
有人指出有两种方法可以做到这一点:
我发现这样做的最简单方法是使用选项1,但通过LinkedList
。我只是将每个对象附加到堆栈的前面。它足够灵活,仍允许列表在ListView
或RecyclerView
中使用。这种方式即使它们按最新到最新的顺序排列,您仍然可以查看或检索最新到最旧的。