Перетащите и перетащите его на элемент RecyclerView Android

Я разрабатываю приложение для Android, которое имеет экран, содержащий следующее:

  1. Вид ресайклера, который содержит категории, как показано ниже
  2. Отдельный вид на botton и пользователь должен перетащить его на элемент RecyclerView, и после его удаления пользователь покажет изменение в данных элемента RecyclerView (например, количество элементов в категории)

Мне нужна помощь в том, как реализовать этот процесс, чтобы перетащить View в элемент Recycler, следующий рисунок объясняет, что именно я хочу сделать, но не знаю, как это сделать

Введите описание изображения здесь

Любая помощь высоко ценится

Начните с добавления draglistener к вашему завышенному виду в onCreateViewHolder вашего адаптера ресайклера.

 view.setOnDragListener(new OnDragListener() { @Override public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has started, return true to tell that you're listening to the drag return true; case DragEvent.ACTION_DROP: // the dragged item was dropped into this view Category a = items.get(getAdapterPosition()); a.setText("dropped"); notifyItemChanged(getAdapterPosition()); return true; case DragEvent.ACTION_DRAG_ENDED: // the drag has ended return false; } return false; } }); 

В случае ACTION_DROP вы можете либо изменить модель, либо вызвать notifyItemChanged() , либо изменить непосредственно представление (которое не будет обрабатывать случай перезаписи). Также в onCreateViewHolder добавьте longClickListener к вашему View , а в onLongClick начните перетаскивание:

 ClipData.Item item = new ClipData.Item((CharSequence) view.getTag()); String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN}; ClipData dragData = new ClipData(view.getTag().toString(), mimeTypes, item); view.setVisibility(View.GONE); HeptagonDragShadowBuilder myShadow = new HeptagonDragShadowBuilder(Heptagon.this, 1.1f); if (VERSION.SDK_INT >= VERSION_CODES.N) { view.startDragAndDrop(dragData, myShadow, null, 0); } else { view.startDrag(dragData, myShadow, null, 0); } 

Дополнительные сведения о перетаскивании см. На сайте разработчиков Android.

Intereting Posts
Загрузка асинхронных изображений в GridView (Android) Установка показывает ошибку в консоли: УСТАНОВИТЕ НЕИСПРАВНОСТЬ ПОСТАВЩИКА КОНФЛИКТА ActionBarSherlock & HoloEverywhere – принудительное переполнение? Одиночный диалог оповещения для всего приложения Как изменить файл hosts на android Android: передать список <GeoPoint> в другую активность Возможно ли одновременно работать как с физической клавиатурой, так и с мягкой клавиатурой? Самый надежный способ получить обложку альбомов на Android Android: как получить идентификатор PendingIntent для отмены pendingintent Как создать OpenSSL для генерации libcrypto.a с Android NDK и Windows Ошибка ввода-вывода android: существующее соединение было принудительно закрыто удаленным хостом Удаление (Raw) контактов в Android 2.x Как установить фоновое изображение из папки ресурса в Android? Почему странное соглашение об именах «AlertDialog.Builder» вместо «AlertDialogBuilder» в Android Переключение между различными тегами репозитория Android