Implementación onItemClickLitsner en recyclerView Kotlin -android

Estoy escribiendo mi primera aplicación de Android en Kotlin y estoy tratando de implementar onItemClickListner en un RecyclerView utilizando kotlin en android studio 3.0, pero todavía no puedo encontrar nada útil. entonces tengo MovieListGagment :

class MoviesListFragment : Fragment() { private var mListener: OnFragmentInteractionListener? = null private var movieList = ArrayList<Movies>() private var mAdapter: MoviesRecyclerAdapter? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment return inflater!!.inflate(R.layout.fragment_movies_list, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) mAdapter = MoviesRecyclerAdapter(movieList) val mLayoutManager = LinearLayoutManager(this.activity) recyclerView!!.layoutManager = mLayoutManager recyclerView!!.itemAnimator = DefaultItemAnimator() recyclerView!!.adapter = mAdapter prepareMoviesData() } interface OnFragmentInteractionListener { // TODO: Update argument type and name fun onFragmentInteraction(uri: Uri) } private fun prepareMoviesData() { var movie = Movies("Mad Max: Fury Road", "Action & Adventure", "2015") movieList.add(movie) movie = Movies("Inside Out", "Animation, Kids & Family", "2015") movieList.add(movie) movie = Movies("Star Wars:The Force Awakens", "Action", "2015") movieList.add(movie) mAdapter!!.notifyDataSetChanged() } } 

y el adaptador MoviesRecyclerAdapter:

 class MoviesRecyclerAdapter(private val moviesList: List<Movies> ) : RecyclerView.Adapter<MoviesRecyclerAdapter.MyViewHolder>() { class MyViewHolder(view: View ) : RecyclerView.ViewHolder(view) ,View.OnClickListener { var title: TextView = view.findViewById<TextView>(R.id.title) var year: TextView = view.findViewById<TextView>(R.id.year) var genre: TextView = view.findViewById<TextView>(R.id.genre) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { val itemView = LayoutInflater.from(parent.context) .inflate(R.layout.movie_list_row, parent, false) return MyViewHolder(itemView ) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { val Movies = moviesList[position] holder.title.text = Movies.title holder.genre.text = Movies.genre holder.year.text = Movies.year } override fun getItemCount(): Int { return moviesList.size } } 

Necesito que cuando el usuario click un elemento de la list para abrir otra Actividad, ¿cuál es el limpiador y la mejor manera de hacerlo?

Puede usar un lambda como callback, por ejemplo, como propiedad de class de su adaptador:

 var onItemClick: (Int) -> Unit = {} 

luego en onCreateViewHolder :

 itemView.setOnClickListener { onItemClick(viewHolder.getAdapterPosition()) } 

y no te olvides de configurar la callback desde tu fragment:

 adapter.onClick = { position -> // do something here } 
  • RecyclerView itemClickListener en Kotlin
  • Kotlin || El elemento Recycleview no está inflando: código inalcanzable en cada método reemplazado de RecycleView.Adapter
  • ¿Cómo uso un onItemLongClickListener en mi actividad en Android?
  • ¿Cómo agregar un oyente Onclick en un RecyclerView en Android Studio con Kotlin?
  • La image no se muestra en Recyclerview usando Glide
  • Cómo proteger el oyente de desplazamiento sin fin de un reciclador
  • Actualizando la Vista de Reciclador y Creando Parcelables para la rotation de la pantalla (¿Cuál es el mejor curso de acción aquí?)
  • RecyclerView.ViewHolder no se vincula correctamente
  • kotlin, android, fragment, vacío, reciclador, vista, después, espalda
  • kotlin RecyclerViewAdapter IndexOutOfBoundException
  • SortedList IndexOutBoundsException: Inconsistencia detectada. La position del artículo no es válida al eliminar el último elemento