gpt4 book ai didi

Android - 按时间戳排序 Firebase 数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:55 26 4
gpt4 key购买 nike

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

enter image description here

我尝试了以下方法。

方法 A

定义数据库引用

DatabaseReference conversationReference = mFirebaseDatabaseReference
.child(USERS).child(mFirebaseUser.getUid()).child(CONV_DETAILS).orderByChild("last_time_stamp").getRef();

定义 FirebaseRecycler 适配器

 mFirebaseAdapter = new FirebaseRecyclerAdapter<ConversationDetails,
ConversationsViewHolder>(
ConversationDetails.class,
R.layout.conversation_list_item,
ConversationsViewHolder.class, conversationReference) {


@Override
protected void populateViewHolder(ConversationsViewHolder viewHolder,
final ConversationDetails conversationDetails, int position) {
}
};

方法 B:

在字段名称前加上减号

conversationReference = mFirebaseDatabaseReference
.child(USERS).child(mFirebaseUser.getUid()).child(CONV_DETAILS).orderByChild("-last_time_stamp").getRef();

这两种情况都不起作用,只能按照 firebase 数据库中存储的数组顺序显示。但是,我需要首先显示具有较高 last_time_stamp 值的对话详细信息。

请任何人帮助我找到解决方案。

最佳答案

使用Query查询数据并执行orderByValue()。这总是按升序提供数据。因此您可以反转数据,或翻转 Recycler View 以显示最新聊天。

不要忘记添加限制。使用 limit 从升序列表中获取最后一项。

Query chatQuery = conversationReference.orderByChild("last_time_stamp"). limitToLast(20);

这将为您提供 20 个最新的聊天记录,时间戳升序排列。现在翻转此列表并使用它。

或者您始终可以在回收站 View 中将 reverseLayout 设置为 true。同时将 setStackFromEnd 添加到 true

关于Android - 按时间戳排序 Firebase 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com