问题
I used firebase database to load information into the recyclerview. By using itemtouchhelper, I was able to relocate the items in the recyclerview. However, the changes made to the recyclerview doesn't save and always goes back to its original state when I end the activity. How can I fix my code to make the changes last permanently?
ItemTouchHelper.SimpleCallback simpleCallback = new
ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START |
ItemTouchHelper.END, 0) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder
viewHolder, @NonNull RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
Collections.swap(List, fromPosition, toPosition);
adapter.notifyItemMoved(fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
}};
private void loadList() {
List = new ArrayList<>();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("List");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
List.clear();
for(DataSnapshot ss: snapshot.getChildren()){
if(ss.child("moreList").child(ID).exists()){
ListModel model = ss.getValue(ListModel.class);
List.add(model);
}
}
adapter = new ListAdapter(getActivity(), List);
RecyclerView.setAdapter(adapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(RecyclerView);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
来源:https://stackoverflow.com/questions/65193053/changes-made-to-recyclerview-does-not-save