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.