Как сделать один adapter для нескольких RecyclerView с разными моделями данных?

У меня на экране есть 3 RecyclerView, и есть 3 модели данных: Movie, Tv, Cast. Я написал адаптер для Movie, и понял, что для Tv и Cast код будет точно такой же. Мне не хотелось бы писать 3 адаптера, которые отличаются только моделью данных, думаю, что можно сделать один адаптер для всех трех типов данных, но я с дженериками не дружу, не понимаю, как их протягивать, поэтому прошу помощи.

Код адаптера:

class MoviesAdapter : RecyclerView.Adapter<MovieViewHolder>() {
    private var movies: List<Movie> = Collections.emptyList()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
        val binding = ItemMovieBinding
                .inflate(LayoutInflater.from(parent.context), parent, false)

        return MovieViewHolder(binding)
    }

    override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
        holder.bind(movies[position])
    }

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

    fun setMovies(movies: List<Movie>) {
        this.movies = movies
        notifyDataSetChanged()
    }
    
    inner class MovieViewHolder(private val binding: ItemMovieBinding) : RecyclerView.ViewHolder(binding.root) {

        fun bind(item: Movie) {
            binding.titleTextView.text = item.title
            
            Picasso.get()
                    .load(IMAGE_BASE_URL + item.posterPath)
                    .into(binding.posterImageView)
        }
    }
}

Ответы (0 шт):