Harikant Sharma
Harikant Sharma

Reputation: 73

Different onClick for each and every Recyclerview item

I am making a grid layout with the help of Recyclerview and I have already added four Recyclerview items in a grid programmatically and now I want to navigate to different fragments when I click on different items. I am unable to find any appropriate way to do so.

Upvotes: 0

Views: 1044

Answers (3)

Harikant Sharma
Harikant Sharma

Reputation: 73

override fun onBindViewHolder(holder: StPanelHomeViewHolder, position: Int) {
        val item = dataset[position]
        holder.cardViewNavigation[0].setOnClickListener {
            val action =
                StPanelHomeFragmentDirections.actionStPanelHomeFragmentToStPanelPayFeeFragment()
            holder.view.findNavController().navigate(action)
        }
    }

Upvotes: 0

Alireza Barakati
Alireza Barakati

Reputation: 1084

You should use if condition in onBindViewHolder of your adpter class as bellow:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.item.setOnClickListener {
        when (position) {
            0 -> {
                //navigate to first fragment}
            }
            1 -> {
                //navigate to second fragment}
            }
            2 -> {
                //navigate to third fragment}
            }
            3 -> {
                //navigate to fourth fragment}
            }
        }
    }
}

Upvotes: 1

Sumit Kumar
Sumit Kumar

Reputation: 292

Try below code

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textViewName.text = seriesList[position].name
        holder.textViewNameDesc.text = seriesList[position].desc

        holder.textViewName.setOnClickListener {
                            Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
        }


    }

You need to add above code in your recycler adapter

Upvotes: 0

Related Questions