如何根据来自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