Я хочу отсортировать записи по количеству звезд в базе данных 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) {
}
});