首页 > 解决方案 > 如何使用 ItemTouchHelper 从 firebase 永久重新排序 RecyclerView?

问题描述

我正在做一个火力基地项目。我使用 Itemtouchhelper 从 firebase 数据库中拖动和重新排序 recyclerview,但如果我进入另一个活动并返回或重新启动应用程序,它会重置为原来的状态。有没有办法永久更改 recyclerview 订单?


 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 false;
 }

 @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) {

}

});

标签: javaandroidfirebase-realtime-database

解决方案


推荐阅读