ユーザーが私のRecyclerViewでドラッグアンドドロップを停止したとき(ユーザーがドロップ選択したアイテムをドロップしたとき)に耳を傾ける必要があります。
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;
}
[〜#〜]更新[〜#〜]
まず、canDropOver
を実装することで、オブジェクトをドロップできる場所を定義できます。
@Override
public boolean canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder current, RecyclerView.ViewHolder target) {
return current.getItemViewType() == getItemViewType();
}
使用するアダプタを更新しますonMove
これはドラッグ操作中に複数回呼び出すことができます
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
adapter.moveItem(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
要素との相互作用が過剰になったことを検出するには、clearView
を実装します。これは、成功(アイテムの移動またはスワイプ)またはキャンセル(アイテムの移動またはスワイプ)の場合でも、任意のアクションタイプ(ドラッグまたはスワイプ)に適用されます。
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
// Action finished
}