Skip to main content

How to implement swipe to delete in a RecyclerView in Kotlin Android

How to implement swipe to delete in a RecyclerView in Kotlin Android.

Here's a detailed step-by-step tutorial on how to implement swipe to delete in a RecyclerView in Kotlin Android.

Step 1: Set up the project

  • Create a new Android project in Kotlin.
  • Add the necessary dependencies to your project's build.gradle file:
implementation 'androidx.recyclerview:recyclerview:1.2.1'

Step 2: Create the RecyclerView layout

  • Open the activity_main.xml file and add a RecyclerView element:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

Step 3: Create the RecyclerView item layout

  • Create a new XML file called item_layout.xml and define the layout for each item in the RecyclerView.
  • For example, you can use a TextView to display the item's text:
<TextView
android:id="@+id/itemText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

Step 4: Create the RecyclerView adapter

  • Create a new Kotlin file called RecyclerViewAdapter.kt and define a class for the RecyclerView adapter.
  • Extend the RecyclerView.Adapter class and implement the necessary methods:
class RecyclerViewAdapter(private val itemList: MutableList<String>) :
RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val itemText: TextView = itemView.findViewById(R.id.itemText)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = itemList[position]
holder.itemText.text = item
}

override fun getItemCount(): Int {
return itemList.size
}
}

Step 5: Set up the RecyclerView in the MainActivity

  • Open the MainActivity.kt file and initialize the RecyclerView and the adapter:
class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
private lateinit var adapter: RecyclerViewAdapter
private lateinit var itemList: MutableList<String>

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

recyclerView = findViewById(R.id.recyclerView)
itemList = mutableListOf("Item 1", "Item 2", "Item 3") // Replace with your actual data
adapter = RecyclerViewAdapter(itemList)

recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(this)

// Add swipe to delete functionality here
}
}

Step 6: Implement swipe to delete functionality

  • Add the following code inside the onCreate() method in MainActivity.kt, after setting up the RecyclerView:
val itemTouchHelperCallback = 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) {
val position = viewHolder.adapterPosition
itemList.removeAt(position)
adapter.notifyItemRemoved(position)
}
}

val itemTouchHelper = ItemTouchHelper(itemTouchHelperCallback)
itemTouchHelper.attachToRecyclerView(recyclerView)

That's it! You have successfully implemented swipe to delete in a RecyclerView using Kotlin in Android.