Skip to main content

How to implement swipe to share functionality in a RecyclerView in Kotlin Android

How to implement swipe to share functionality in a RecyclerView in Kotlin Android.

Here is a detailed step-by-step tutorial on how to implement swipe to share functionality in a RecyclerView in Kotlin Android.

Step 1: Set up the project

  • Create a new Android project in Kotlin.
  • Add the required dependencies in your app's build.gradle file:
    implementation 'androidx.recyclerview:recyclerview:1.2.0'

Step 2: Create layout files

  • Create a layout file for the RecyclerView item. For example, item_view.xml:

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- Add your item views here -->

    </LinearLayout>

Step 3: Create the RecyclerView adapter

  • Create a new Kotlin class, MyAdapter, and make it extend RecyclerView.Adapter.

  • Implement the required methods: onCreateViewHolder, onBindViewHolder, and getItemCount.

  • In the onCreateViewHolder method, inflate the layout for the item view and return a ViewHolder instance.

  • In the onBindViewHolder method, bind the data to the item view.

  • Here's an example implementation:

    class MyAdapter(private val items: List<String>) :
    RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    // Add references to your item views here
    }

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

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    // Bind data to your item views here
    }

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

Step 4: Implement swipe to share functionality

  • In the ViewHolder class, implement swipe functionality using a ItemTouchHelper.SimpleCallback.

  • Override the onMove method and leave it empty, as we don't need drag and drop functionality.

  • In the onSwiped method, handle the swipe action. In this case, we'll share the item's data.

  • Here's an example implementation:

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    init {
    val swipeCallback = 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
    val item = items[position]

    if (direction == ItemTouchHelper.LEFT || direction == ItemTouchHelper.RIGHT) {
    shareItem(item)
    }
    }
    }

    val itemTouchHelper = ItemTouchHelper(swipeCallback)
    itemTouchHelper.attachToRecyclerView(recyclerView)
    }
    }

Step 5: Implement the shareItem function

  • In your activity or fragment, implement the shareItem function to handle the share action.
  • Use the Intent.ACTION_SEND action to create a share intent.
  • Set the type of the shared data using intent.type.
  • Add the item's data as extra to the intent.
  • Start the share activity using startActivity.
  • Here's an example implementation:
    private fun shareItem(item: String) {
    val shareIntent = Intent(Intent.ACTION_SEND)
    shareIntent.type = "text/plain"
    shareIntent.putExtra(Intent.EXTRA_TEXT, item)
    startActivity(Intent.createChooser(shareIntent, "Share via"))
    }

Step 6: Set up the RecyclerView

  • In your activity or fragment, create an instance of the RecyclerView and set its adapter.
  • Set the layout manager for the RecyclerView, such as LinearLayoutManager or GridLayoutManager.
  • Here's an example implementation:
    val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
    recyclerView.adapter = MyAdapter(items)
    recyclerView.layoutManager = LinearLayoutManager(this)

That's it! You have now implemented swipe to share functionality in a RecyclerView in Kotlin Android. Run your app and try swiping an item to share its data.