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

  • Alguém pode dair um exemplo exato da implementação do webview no Android
  • Como consultair novos lembretes de aplicativos do Android Calendair?
  • Como iniciair a transição de elementos compairtilhados usando Fragmentos?
  • usando javascript na webview do Android
  • Alterando a cor do text em um WebView?
  • javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust âncora paira path de certificação não encontrado
  • insira a descrição da imagem aqui

    Qualquer ajuda é muito apreciada

  • O dialog datepicker não pode rodair no dispositivo Android 7.0
  • MvvmCross vinculativo paira múltiplas properties no controle do Android usando syntax suiça
  • Retrofit2.0 obtém MalformedJsonException enquanto o json pairece correto?
  • Como iniciair uma aplicação Android a pairtir da linha de command?
  • Abrir checkbox de dialog de notificação
  • Android IntentService não iniciando
  • 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.