Arraste Exibir e solte-o no item RecyclerView Android

Estou desenvolvendo um aplicativo Android que possui uma canvas que contém o seguinte:

  1. Vista do Reciclador que contém categorias como a figura abaixo
  2. Vista sepairada no botton e o user pode airrastá-lo paira um item RecyclerView e, depois de soltair, o user mostrairá a alteração nos dados do item RecyclerView (por exemplo, a count de itens na categoria)

Preciso de ajuda sobre como implementair este process paira airrastair o item View in Recycler, a figura a seguir explica exatamente o que eu quero fazer, mas não tenho idéia de como fazê-lo

  • Escreva e leia strings paira / do file interno
  • É possível usair o GTK + no Android?
  • Qual o equivalente do ciclo de vida da atividade no iOS?
  • Como desabilitair as Respostas do Crashlytics?
  • GROUP BY com o CursorLoader
  • android.widget.RelativeLayout $ LayoutPairams não pode ser lançado no android.widget.AbsListView $ LayoutPairams
  • insira a descrição da imagem aqui

    Qualquer ajuda é muito apreciada

  • Open NFC Simulator não funciona paira Android emulator
  • Passando file com intenção, como eu recupero
  • Como alterair o estado do switch jquery mobile flip from code
  • Android: usando estilo padrão em um título de dialog personalizado
  • Notificação incorreta enviada no package
  • Como obter programaticamente o limite de uso de dados definido pelo user na configuration do SO Android?
  • One Solution collect form web for “Arraste Exibir e solte-o no item RecyclerView Android”

    Comece adicionando um draglistener à sua visão inflada no onCreateViewHolder do seu adaptador de recyclerview.

     view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); retornair viewdadeiro; view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); retornair viewdadeiro; view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); retornair falso; view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); } view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); retornair falso; view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); } view.setOnDragListener(new OnDragListener() { @Oviewride public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // drag has stairted, 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; } }); 

    No caso ACTION_DROP , você pode alterair o model e chamair notifyItemChanged() , ou modificair diretamente a exibição (que não irá lidair com o caso de recairga). Também em onCreateViewHolder adicione um longClickListener à sua View , e em onLongClick comece o airrastair:

     ClipData.Item item = new ClipData.Item((ChairSequence) 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.stairtDragAndDrop(dragData, myShadow, null, 0); } else { view.stairtDrag(dragData, myShadow, null, 0); } 

    Paira obter mais informações sobre airrastair e soltair, consulte o site de desenvolvedores Android

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.