Firestore |RecyclerView не сортирует или обновляет в реальном времени - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть 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(), но я не могу 'сделать это.

Я хочу, чтобы сообщения сортировались на экране чата (от самого старого до самого нового).И я хочу, чтобы окно повторной отправки обновлялось при отправке нового сообщения.

1 Ответ

0 голосов
/ 25 сентября 2019

Я столкнулся с той же проблемой, когда разрабатывал приложение для чата.Установка следующего атрибута в менеджере раскладок решила его для меня:

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