Как отобразить список пользователей чата в хронологическом порядке с помощью firebase? - PullRequest
3 голосов
/ 04 апреля 2019

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

enter image description here

   mDatabaseReference = FirebaseDatabase.getInstance().getReference();
                final Query databaseReference = FirebaseDatabase.getInstance().getReference().child(FirebaseConstants.USERS).child(mFirebaseUser).child(FirebaseConstants.COLLEGEMATES).orderByChild("timestamp");
                final DatabaseReference databaseReference1 = FirebaseDatabase.getInstance().getReference().child(FirebaseConstants.USERS);
                FirebaseRecyclerOptions<Student> options = new FirebaseRecyclerOptions.Builder<Student>().setQuery(databaseReference, Student.class).setLifecycleOwner(getActivity()).build();
                firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Student, FirebaseListViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull final FirebaseListViewHolder holder, final int position, @NonNull final Student model) {
                        try {
                            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(final DataSnapshot dataSnapshot) {
}

1 Ответ

0 голосов
/ 04 апреля 2019

Я решил эту проблему, добавив дочерний элемент к каждому сообщению с именем «createAt», добавленному с этим фрагментом:

            String patternForDateExtended = "yyyyMMddHHmmss";
            DateFormat dff = new SimpleDateFormat(patternForDateExtended);
            Date today = Calendar.getInstance().getTime();
            String timeString = df.format(today);
            String rightNowEverything = dff.format(today)+rightNow.get(Calendar.MILLISECOND);

например, на выходе будет номер полумесяца, например 20190404132156825

, а затем упорядочить сообщения следующим образом:

     myRef.orderByChild("createdAt").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

// adding to the recycleview everything.


            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Надеюсь, что это поможет вам, продолжайте кодировать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...