Как использовать onChildMoved? - PullRequest
0 голосов
/ 22 июня 2019

Я хочу отсортировать записи по количеству звезд в базе данных Firebase, но я не знаю, как использовать onChildMoved, чтобы выяснить, из какой позиции пришел предмет и на какой позиции, и использовать notifyItemMoved.

Вот мой код:

 databaseReference.child("posts").orderByChild("starsCount")
           .addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String previousChildName) {
                Post p = dataSnapshot.getValue(Post.class);
                postKeys.add(dataSnapshot.getKey());
                postList.add(p);
                postAdapter.notifyItemInserted(postList.size() - 1);

            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, String previousChildName) {
                Post p = dataSnapshot.getValue(Post.class);

                int index = postKeys.indexOf(dataSnapshot.getKey());
                if (index > -1) {
                    postList.set(index, p);
                    postAdapter.notifyItemChanged(index);
                }
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
                int index = postKeys.indexOf(dataSnapshot.getKey());

                if (index > -1) {
                    postList.remove(index);
                    postKeys.remove(index);

                    postAdapter.notifyItemRemoved(index);
                }
            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, String previousChildName) {
                //  what I add here????

                /* int fromPosition;
                int toPosition;
                postAdapter.notifyItemMoved(fromPosition, toPosition);*/
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...