java - 如何使用 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) {
}
});
解决方案
推荐阅读
- javascript - 将 Angular 1 Promise ($q) 导入节点
- android - 方法通道在 Flutter 模块中不起作用
- android - 我的 View Pager Adapter 中的 instantiateItem() 是如何工作的?
- c - ADS 1.2 C 编译器工具选项
- python - 根据列表大小创建进度条的逻辑是什么?
- c# - CA1065 不要在意外位置引发异常,如何解决?
- mysql - 将分隔符与 Aurora Serverless MySQL 5.6 一起使用时出现语法错误
- php - 数据库未通过 ajax 更新
- c# - LinkedIn OAuth 失败并显示 https_required 错误消息
- netbeans - 下载 NetBeans 时出现问题