0
0
Android Kotlinmobile~5 mins

Swipe to dismiss in Android Kotlin

Choose your learning style9 modes available
Introduction

Swipe to dismiss lets users remove items from a list by swiping them away. It makes apps feel natural and easy to use.

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.