Swipe to dismiss lets users remove items from a list by swiping them away. It makes apps feel natural and easy to use.
0
0
Swipe to dismiss in Android Kotlin
Introduction
When you want users to delete emails by swiping them left or right.
To let users remove tasks from a to-do list quickly.
When you want to clear notifications by swiping them away.
To allow users to dismiss messages in a chat app.
When you want to provide a fast way to remove items from a shopping cart.
Syntax
Android Kotlin
val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { override fun onMove( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder ): Boolean { return false } override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { // Handle item dismissal here } }) itemTouchHelper.attachToRecyclerView(recyclerView)
Use ItemTouchHelper.SimpleCallback to detect swipe gestures.
Override onSwiped to define what happens when an item is swiped away.
Examples
Remove the swiped item from the list and notify the adapter to update the UI.
Android Kotlin
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition
myList.removeAt(position)
adapter.notifyItemRemoved(position)
}Allow swipe only to the right side.
Android Kotlin
val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder) = false
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
// Only allow swipe to the right
}
})Sample App
This app shows a list of fruits. You can swipe any fruit left or right to remove it from the list. The list updates immediately.
Android Kotlin
class MainActivity : AppCompatActivity() { private lateinit var recyclerView: RecyclerView private val items = mutableListOf("Apple", "Banana", "Cherry", "Date", "Elderberry") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) recyclerView = RecyclerView(this).apply { layoutManager = LinearLayoutManager(this@MainActivity) adapter = object : RecyclerView.Adapter<MyViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { val textView = TextView(parent.context).apply { textSize = 20f setPadding(20, 20, 20, 20) } return MyViewHolder(textView) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { (holder.itemView as TextView).text = items[position] } override fun getItemCount() = items.size } } setContentView(recyclerView) val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder) = false override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val position = viewHolder.adapterPosition items.removeAt(position) recyclerView.adapter?.notifyItemRemoved(position) } }) itemTouchHelper.attachToRecyclerView(recyclerView) } class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) }
OutputSuccess
Important Notes
Make sure to update your data source when an item is dismissed to keep UI and data in sync.
You can customize swipe directions by changing the flags in SimpleCallback.
Consider adding an undo option to improve user experience after dismissing.
Summary
Swipe to dismiss lets users remove list items by swiping left or right.
Use ItemTouchHelper.SimpleCallback and override onSwiped to handle the swipe.
Always update your data and notify the adapter to keep UI consistent.