如何根据来自firebase的时间戳获取排序数据[重复]

Posted

技术标签:

【中文标题】如何根据来自firebase的时间戳获取排序数据[重复]【英文标题】:How to get sorted data based on timestamp from firebase [duplicate] 【发布时间】:2021-10-06 03:57:45 【问题描述】:

我正在开发一个 android 聊天应用程序,我需要在其中按时间戳对对话详细信息进行排序。下面提到了我的 firebase 数据结构。

storing data like this

现在我想根据时间戳从 firebase 实时数据库中检索并在我的 RecyclerView 上按降序/最新顺序显示数据。

我尝试了以下方法。

 final DatabaseReference nm= FirebaseDatabase.getInstance().getReference("Transaction");

            Query query = nm.orderByChild("Timestamp")
                            .limitToLast(5);


    query.addListenerForSingleValueEvent(new ValueEventListener() 
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 
            listData.clear();
            if (dataSnapshot.exists())
                for (DataSnapshot npsnapshot : dataSnapshot.getChildren())
                    Transaction ld=  npsnapshot.getValue(Transaction.class);

                    listData.add(ld);
                
                Tadapter=new TransactionAdapter(listData);
                rv.setAdapter(Tadapter);
                Log.d(TAG,"Total Count"+Tadapter.getItemCount());

            
        

【问题讨论】:

您的代码似乎没问题,兄弟,您遇到了什么问题? 【参考方案1】:

我认为你在这段代码中犯了小错误

query.addListenerForSingleValueEvent(new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) 
        listData.clear();
        if (dataSnapshot.exists())
            for (DataSnapshot npsnapshot : dataSnapshot.getChildren())
                Transaction ld=  npsnapshot.getValue(Transaction.class);

                listData.add(ld);
            
            Tadapter=new TransactionAdapter(listData);
            rv.setAdapter(Tadapter);
            Log.d(TAG,"Total Count"+Tadapter.getItemCount());

        
    

您正在查询 singleEvent 您必须查询 addValueEventListener

query.addValueEventListener(new ValueEventListener() 
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) 
            listData.clear();
            if (dataSnapshot.exists())
                for (DataSnapshot npsnapshot : dataSnapshot.getChildren())
                    Transaction ld=  npsnapshot.getValue(Transaction.class);

                    listData.add(ld);
                
                Tadapter=new TransactionAdapter(listData);
                rv.setAdapter(Tadapter);
                Log.d(TAG,"Total Count"+Tadapter.getItemCount());
            
        

        @Override
        public void onCancelled(@NonNull DatabaseError error) 

        
    );

【讨论】:

以上是关于如何根据来自firebase的时间戳获取排序数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据 Firebase 的最新日期将数据排序到 RecyclerView

Flutter 按时间戳对 Firebase 快照进行排序

如何在特定时间触发来自firebase的通知?

如何从swift中的时间戳获取日期格式

如何使用 Firestore 在 Cloud Functions for Firebase 中获取服务器时间戳?

如何以毫秒为单位获取firebase服务器的当前时间戳?