这可能是由于项的重新排序没有正确地通知Recycler View适配器而导致的。为了解决此问题,您可以尝试以下几种方法:
public class MyItemTouchHelperCallback extends ItemTouchHelper.Callback {
private final MyAdapter mAdapter;
public MyItemTouchHelperCallback(MyAdapter adapter) {
mAdapter = adapter;
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// Handle swipe event
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
}
public class MyAdapter extends RecyclerView.Adapter {
private List mItems;
public MyAdapter(List items) {
mItems = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate view and return ViewHolder
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// Bind data to ViewHolder
}
@Override
public int getItemCount() {
return mItems.size();
}
public void onItemMove(int fromPosition, int toPosition) {
Collections.swap(mItems, fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
}
static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView