I have two fragment. On one fragment I have recycler view . I have use retrofit to fetch news from api and set news on cardview on the recycler view. Now I want when user will click on a card the whole news will display on a new fragment. Here is the first fragment class where I have recycler view
package com.sumita.newsappusingfragment
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_recycle.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class Recycle : Fragment() {
lateinit var adapter: NewsAdapter
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view : View= inflater.inflate(R.layout.fragment_recycle, container, false)
getNews()
return view
}
private fun getNews() {
val news : Call<News> = NewsSeversis.newsIntence.getHeadlines("in",1)
//retrofit use a queue and store all the request on that queue and process one by one.when one
// request processed it its callback and then process another
news.enqueue(object : Callback<News> {
override fun onResponse(call: Call<News>, response: Response<News>) {
//here response is a News response
val news:News?=response.body()
if (news!=null){
Log.d("response",news.toString())
adapter= NewsAdapter(news.articles)
newsList.adapter=adapter
newsList.layoutManager= LinearLayoutManager(requireContext())
}
}
override fun onFailure(call: Call<News>, t: Throwable) {
Log.d("response","error occur",t)
}
})
}
}
Here is the adapter of that recycler view
package com.sumita.newsappusingfragment
import android.content.Context
import android.content.Intent
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.item_layout.view.*
class NewsAdapter (val artical: List<Artical>):RecyclerView.Adapter<NewsAdapter.articalViewHolder>(){
inner class articalViewHolder(itemView: View):RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): articalViewHolder {
val view:View=LayoutInflater.from(parent.context).inflate(R.layout.item_layout,parent,false)
return articalViewHolder(view)
}
override fun onBindViewHolder(holder: articalViewHolder, position: Int) {
val articals:Artical=artical[position]
holder.itemView.apply {
newsTitle.text=articals.title
newsDescription.text=articals.description
Glide.with(context).load(articals.urlToImage).into(newsImage)
holder.itemView.setOnClickListener {
}
}
}
override fun getItemCount(): Int {
return artical.size
}
}
Now I want to pass the url of that news on Item clicked. How I can implement that onClickListener