Android ошибка при попытке sawp карточек

Пытаюсь сделать drag and drop вместе с ArrayList и при попытке поменять местами карточки, приложение крашиться. Помогите решить ошибку.

Ошибка

java.lang.NullPointerException: Attempt to read from null array
        at com.example.myapplication.ui.News_Favorites.FavCardItemTouchHelperCallback.swapCards(FavCardItemTouchHelperCallback.java:43)
        at com.example.myapplication.ui.News_Favorites.FavCardItemTouchHelperCallback.onMove(FavCardItemTouchHelperCallback.java:34)
        at androidx.recyclerview.widget.ItemTouchHelper.moveIfNecessary(ItemTouchHelper.java:881)
        at androidx.recyclerview.widget.ItemTouchHelper$2.onTouchEvent(ItemTouchHelper.java:387)

FavCardItemTouchHelperCallback

public class FavCardItemTouchHelperCallback extends ItemTouchHelper.Callback {
    private static final int DRAG_FLAGS = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
    private static final int SWIPE_FLAGS = 0;
    private final FavoritesAdapter favoritesAdapter;
    FavCardItemTouchHelperCallback(FavoritesAdapter favoritesAdapter) {
        this.favoritesAdapter = favoritesAdapter;
    }
    @Override
    public int getMovementFlags(
            @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
        return makeMovementFlags(DRAG_FLAGS, SWIPE_FLAGS);
    }
    @Override
    public boolean onMove(
            @NonNull RecyclerView recyclerView,
            @NonNull RecyclerView.ViewHolder viewHolder,
            @NonNull RecyclerView.ViewHolder target) {
        int fromPosition = viewHolder.getAdapterPosition();
        int toPosition = target.getAdapterPosition();
        swapCards(fromPosition, toPosition, favoritesAdapter);
        return true;
    }
    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction)
    {
    }
    static void swapCards(int fromPosition, int toPosition, FavoritesAdapter favoritesAdapter) {
        int fromNumber = favoritesAdapter.cardNumbers[fromPosition];
        favoritesAdapter.cardNumbers[fromPosition] = favoritesAdapter.cardNumbers[toPosition];
        favoritesAdapter.cardNumbers[toPosition] = fromNumber;
        favoritesAdapter.notifyItemMoved(fromPosition, toPosition);
    }
}

Адаптер (FavoritesAdapter)

public class FavoritesAdapter extends RecyclerView.Adapter<FavoritesAdapter.FavoritesViewHolder> {
    public int[] cardNumbers;
    private ArrayList<FavoritesItem> mFavList;
    private ItemTouchHelper itemTouchHelper;
    public static class FavoritesViewHolder extends RecyclerView.ViewHolder {
        public ImageView mImageView;
        public TextView mTextView1;
        public FavoritesViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.card_img_2);
            mTextView1 = itemView.findViewById(R.id.card_txt);
        }
    }
    public FavoritesAdapter(ArrayList<FavoritesItem> favList) {
        mFavList = favList;
    }
    @NonNull
    @Override
    public FavoritesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.fragment_card, parent, false);
        return new FavoritesAdapter.CardViewHolder(view);
    }
    @Override
    public void onBindViewHolder(FavoritesAdapter.FavoritesViewHolder holder, int position) {
        ((FavoritesAdapter.CardViewHolder) holder).bind(itemTouchHelper);
        FavoritesItem currentItem = mFavList.get(position);
        holder.mImageView.setImageResource(currentItem.getImg());
        holder.mTextView1.setText(currentItem.getTxt());
    }
    @Override
    public int getItemCount() {
        return mFavList.size();
    }

    public static class FavoritesItem {
        private int mImg;
        private String mTxt;
        public FavoritesItem(int img, String txt) {
            mImg = img;
            mTxt = txt;
        }
        public int getImg() {
            return mImg;
        }
        public String getTxt() {
            return mTxt;
        }
    }
    void setItemTouchHelper(ItemTouchHelper itemTouchHelper) {
        this.itemTouchHelper = itemTouchHelper;
    }
    private static class CardViewHolder extends FavoritesViewHolder {
        private final View dragHandleView;
        private CardViewHolder(View itemView) {
            super(itemView);
            dragHandleView = itemView.findViewById(R.id.card_img);
        }
        @SuppressLint("ClickableViewAccessibility")
        private void bind(final ItemTouchHelper itemTouchHelper) {
            dragHandleView.setOnTouchListener(
                    (v, event) -> {
                        if (event.getAction() == MotionEvent.ACTION_DOWN) {
                            itemTouchHelper.startDrag(FavoritesAdapter.CardViewHolder.this);
                            return true;
                        }
                        return false;
                    });
        }
    }
}

Fragment (FavoritesTabs)

public class FavoritesTabs extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_favorites_tabs, container, false);
    }

    @Override
    public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {

        ArrayList<FavoritesAdapter.FavoritesItem> exampleList = new ArrayList<>();
        exampleList.add(new FavoritesAdapter.FavoritesItem(R.drawable.ic_anim_main_22, "Line 1"));
        exampleList.add(new FavoritesAdapter.FavoritesItem(R.drawable.ic_notifications_black_24dp, "Line 5"));
        exampleList.add(new FavoritesAdapter.FavoritesItem(R.drawable.ic_anim_handbook_37, "Line 6"));
        
        RecyclerView mRec = requireView().findViewById(R.id.card_recy_f);
        mRec.setHasFixedSize(true);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext());
        FavoritesAdapter mAdapter = new FavoritesAdapter(exampleList);
        mRec.setLayoutManager(mLayoutManager);
        mRec.setAdapter(mAdapter);

        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new FavCardItemTouchHelperCallback(mAdapter));
        mAdapter.setItemTouchHelper(itemTouchHelper);
        itemTouchHelper.attachToRecyclerView(mRec);


    }
}

Ответы (0 шт):