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
}
}
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
Komentar
Posting Komentar