In this tutorial, we will learn how to build ListView and RecyclerView with Custom Adapter in Kotlin. Everybody knows what is Listview and Recyclerview. So, without any introduction about them we will jump into the coding part of the Tutorial.
Coding Part
Kotlin ListView Example
We should follow the same steps to create Activity with associated layout file for example MainActivity.kt with activity_main.xmlCreate ListView Adapter
Create new class and named as MoviesListViewAdapter and paste the following.class MoviesListViewAdapter(private val activity: Activity, moviesList: List) : BaseAdapter() {
    private var moviesList = ArrayList()
    init {
        this.moviesList = moviesList as ArrayList
    }
    override fun getCount(): Int {
        return moviesList.size
    }
    override fun getItem(i: Int): Any {
        return i
    }
    override fun getItemId(i: Int): Long {
        return i.toLong()
    }
    @SuppressLint("InflateParams", "ViewHolder")
    override fun getView(i: Int, convertView: View?, viewGroup: ViewGroup): View {
        var vi: View = convertView as View
        val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        vi = inflater.inflate(R.layout.movie_list_row, null)
        val title = vi.findViewById(R.id.title)
        val genre = vi.findViewById(R.id.genre)
        val year = vi.findViewById(R.id.year)
        title.text = moviesList[i].title
        genre.text = moviesList[i].genre
        year.text = moviesList[i].year
        return vi
    }
}
      listView = findViewById(R.id.listView) as ListView
adapter = MoviesListViewAdapter(this, movieList)
(listView as ListView).adapter = adapterKotlin RecyclerView Example
Create RecyclerView Adapter
Create new class and named as MoviesRecyclerAdapter and paste the following.class MoviesRecyclerAdapter(private val moviesList: List) : RecyclerView.Adapter() {
    inner class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        var title: TextView = view.findViewById(R.id.title)
        var year: TextView = view.findViewById(R.id.year)
        var genre: TextView = view.findViewById(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
    }
}     recyclerView = findViewById(R.id.recyclerView) as RecyclerView
mAdapter = MoviesRecyclerAdapter(movieList)
val mLayoutManager = LinearLayoutManager(applicationContext)
recyclerView!!.layoutManager = mLayoutManager
recyclerView!!.itemAnimator = DefaultItemAnimator()
recyclerView!!.adapter = mAdapter 

 
 
 
 
 
Follow Us
Were this world an endless plain, and by sailing eastward we could for ever reach new distances