Showing posts with label Recyclerview. Show all posts

RecyclerView & ListView in Kotlin



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.xml

Create 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
    }
}
Then Assign the adapter to ListView like below
listView = findViewById(R.id.listView) as ListView
adapter = MoviesListViewAdapter(this, movieList)
(listView as ListView).adapter = adapter

Kotlin 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
    }
}
Then Assign the adapter to RecyclerView like below
recyclerView = findViewById(R.id.recyclerView) as RecyclerView
mAdapter = MoviesRecyclerAdapter(movieList)
val mLayoutManager = LinearLayoutManager(applicationContext)
recyclerView!!.layoutManager = mLayoutManager
recyclerView!!.itemAnimator = DefaultItemAnimator()
recyclerView!!.adapter = mAdapter
In this tutorial, I am not covered the basics of creating listview and recyclerview. You can find the full example in download section

Download Code

You can download the full source code for this tutorial from the following Github link. If you Like this tutorial, Please star it in Github.
    
Download From Github