2016-05-24 3 views
7

Je dois écouter l'utilisateur quand il arrête de faire glisser et déposer sur mon RecyclerView (quand il supprime l'élément sélectionné). Puis-je obtenir cette information à travers mon ItemTouchHelper?RecyclerView ItemTouchHelper Action Glisser Terminé

Merci pour aider

Mark: A l'heure actuelle, je ne maintenant lorsque l'utilisateur se déplace toujours l'élément :)

@Override 
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { 
    if (source.getItemViewType() != target.getItemViewType()) { 
     return false; 
    } 
    // Notify the adapter of the move 
    mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition()); 
    return true; 
} 
+0

Vous pouvez renommer votre question pour le rendre plus facile à trouver dans les recherches :) –

Répondre

7

MISE À JOUR

D'abord, vous pouvez définir où un objet peut être abandonné en mettant en œuvre canDropOver

@Override 
public boolean canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder current, RecyclerView.ViewHolder target) { 
    return current.getItemViewType() == getItemViewType(); 
} 

Mettez à jour votre carte que vous souhaitez utiliser onMove cela peut être appelé multiple lors d'une opération de glisser

@Override 
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
    adapter.moveItem(viewHolder.getAdapterPosition(), target.getAdapterPosition()); 
    return true; 
} 

Pour détecter une interaction avec un élément est mise en œuvre sur clearView ceci est pour tout type d'action (glisser ou swipe) dans le même qu'il réussit (point déplacé ou glissée) ou est annulé (article ne se déplace pas ou glissée)

@Override 
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 
    super.clearView(recyclerView, viewHolder); 
    // Action finished 
} 
+0

ajouté ma méthode OnMove mais comment puis-je obtenir l'information que le mouvement s'est arrêté? il notifie seulement quand il est encore en mouvement – keytomake

+0

@keytomake J'ai mis à jour ma réponse pour inclure plus d'informations. Utilisez fondamentalement 'onMove' pour mettre à jour votre adaptateur et' clearView' pour déterminer quand le glisser est terminé. – cyroxis

+0

merci !! clearView était exactement ce dont j'avais besoin – keytomake