Rak*_*h L 4 android firebase firebase-realtime-database
我正在开发一个Android聊天应用程序,我需要通过时间戳订购对话详细信息.我的firebase数据结构如下所述.
我尝试了以下方法.
方法A.
定义DatabaseReference
DatabaseReference conversationReference = mFirebaseDatabaseReference
.child(USERS).child(mFirebaseUser.getUid()).child(CONV_DETAILS).orderByChild("last_time_stamp").getRef();
Run Code Online (Sandbox Code Playgroud)
定义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) {
}
};
Run Code Online (Sandbox Code Playgroud)
方法B:
在字段名称前加上减号
conversationReference = mFirebaseDatabaseReference
.child(USERS).child(mFirebaseUser.getUid()).child(CONV_DETAILS).orderByChild("-last_time_stamp").getRef();
Run Code Online (Sandbox Code Playgroud)
这两种方案都不起作用,只按照存储在firebase数据库中的数组顺序显示.但是,我需要显示具有较高值的会话详细信息last_time_stamp作为第一个.
请任何人帮我找到解决方案.
使用Query查询数据并执行orderByValue().这总是按升序提供数据.所以你可以反转数据,或翻转Recycler视图以显示最新的聊天.
别忘了添加限制.使用限制从升序有序列表中获取最后一项.
Query chatQuery = conversationReference.orderByChild("last_time_stamp"). limitToLast(20);
Run Code Online (Sandbox Code Playgroud)
这将按升序时间戳为您提供20个最新聊天记录.现在翻转此列表并使用它.
或者,您始终reverseLayout可以true在回收站视图中进行设置.还添加setStackFromEnd到true.
| 归档时间: |
|
| 查看次数: |
5961 次 |
| 最近记录: |