2016-05-24 23 views
7

RecyclerViewでドラッグ&ドロップを停止したときに(が選択されたアイテムをドロップしたとき)、ユーザーに耳を傾ける必要があります。RecyclerView ItemTouchHelper Actionドラッグが終了しました

私のItemTouchHelperを通じてこの情報を入手できますか?

マークを支援するための

ありがとう:私は今、ユーザーがまだ項目:)

@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

あなたが検索で見つけることがそれをより簡単にするためにあなたの質問の名前を変更したい場合があります:) –

答えて

7

最初に更新を移動現時点では、オブジェクトができる場所を定義することができます実施することによって落とすcanDropOver

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

あなたは、これが要素との相互作用が終わっこれは任意のアクションタイプ(ドラッグまたはスワイプ)のためであるclearViewを実装しているときを検出するには、ドラッグ操作

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

中に複数呼び出すことができますonMoveを使用したいアダプタを更新中私onMoveメソッドを追加したことが成功してもいること(アイテムが移動またはスワイプ)、またはキャンセルされる(項目移動やスワイプではない)

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

移動が停止した情報をどのように達成できますか?それはまだ動いているときだけ通知する – keytomake

+0

@keytomake私は答えを更新してより多くの情報を追加しました。基本的に 'onMove'を使ってアダプタを更新し、' clearView'を使ってドラッグが完了した時点を判断します。 – cyroxis

+0

ありがとうございます! clearViewはまさに私が必要なものでした – keytomake

関連する問題