消防店|回收器视图不实时排序或更新



我有一个ChatActivity,我可以成功地在两个用户之间发送消息。我想使用时间戳值对消息进行排序(例如您的常规聊天应用程序(。我已经打电话给orderBy()但消息仍然没有排序。这是我的活动onCreate()方法中的代码:

Query query = currentUserRef.orderBy("time", Query.Direction.ASCENDING);
FirestoreRecyclerOptions<Messages> options = new FirestoreRecyclerOptions.Builder<Messages>().setQuery(query, Messages.class).build();
mAdapter = new MessagesAdapter(options,messagesList);
mLinearLayout = new LinearLayoutManager(this);
mMessagesList.setHasFixedSize(true);
mMessagesList.setLayoutManager(mLinearLayout);
mMessagesList.setAdapter(mAdapter);
}
private void sendMessage() {
String message = txtMessage.getText().toString();
if (!TextUtils.isEmpty(message)) {
Map messageMap = new HashMap();
messageMap.put("messages", message);
messageMap.put("type", "text");
messageMap.put("time", FieldValue.serverTimestamp());
messageMap.put("from", mCurrentID);
chat_user_ref.add(messageMap).addOnSuccessListener(documentReference -> currentUserRef.add(messageMap).addOnSuccessListener(documentReference1 -> txtMessage.getText().clear()));
mAdapter.notifyDataSetChanged();
mMessagesList.scrollToPosition(messagesList.size());
}

我尝试将 RecyclerView 作为参数传递给我的适配器,然后尝试在onBindViewHolder()中调用notifyDataSetChanged(),但我无法做到这一点。

我希望消息在聊天屏幕上排序(从最旧到最新(。我希望回收器视图在发送新消息时更新。

我在开发聊天应用程序时遇到了同样的问题。 在布局管理器上设置以下属性为我解决了这个问题:

Query query = currentUserRef.orderBy("time", Query.Direction.DESCENDING);
mLinearLayout.setReverseLayout(true);

最新更新