公司的FireStore | RecyclerView无法实时排序或更新

问题描述 投票:0回答:1

我有一个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作为参数传递给适配器,然后尝试在notifyDataSetChanged()中调用onBindViewHolder(),但我不能这样做。

我希望在聊天屏幕上对消息进行排序(从最旧到最新)。我希望在发送新消息时更新recyclerview。

android android-recyclerview google-cloud-firestore recycler-adapter
1个回答
0
投票

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

Query query = currentUserRef.orderBy("time", Query.Direction.DESCENDING);
mLinearLayout.setReverseLayout(true);
© www.soinside.com 2019 - 2024. All rights reserved.