初めに
RecyclerViewのアイテムを長押しでドラッグ、そのままアイテムを移動 または、スワイプ
させる実装です
簡単にではありますが、実装方法を残しておきます
早速
まず、RecyclerViewが実装されたActivityやFragmentにメンバ変数を定義します
private var itemTouchHelper: ItemTouchHelper? = null
同じクラスのonCreate()関数もしくは、onViewCreated()関数内に以下のコードを入力します
// ドラック&ドロップの実装
itemTouchHelper = ItemTouchHelper(
object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN,
ItemTouchHelper.ACTION_STATE_IDLE) {
override fun onMove( // ドラッグした時
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder,
): Boolean {
val fromPos = viewHolder.adapterPosition
val toPos = target.adapterPosition
// 並び替えを実装したいrecyclerViewのadapter
// 引数には 並び替え前のポジション,並び替え後のポジション
adapter.notifyItemMoved(fromPos, toPos)
return true
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
// スワイプでやりたい処理
}
})
以上になります
終わりに
携帯からスマホになって自然と使っていたドラッグ&ドロップですが、こんな実装をしていたんだ!と身近で使っていた機能を実際に紐解くことができる楽しい体験ができました
個人的にこの実装の記事で端的でわかりやすいものがjavaの記事が多かったので自分用に記事を残しました