Skip to content

Instantly share code, notes, and snippets.

@kavan-mevada
Created April 7, 2019 22:34
Show Gist options
  • Save kavan-mevada/727395f0785cb35026ab56f913d7508d to your computer and use it in GitHub Desktop.
Save kavan-mevada/727395f0785cb35026ab56f913d7508d to your computer and use it in GitHub Desktop.
RecyclerView with ModelView
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="elementx.test.musicplayer.User"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.firstName}"
/>
</LinearLayout>
</layout>
class ListAdapter(val list: MutableList<User>) : RecyclerView.Adapter<ListAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
ViewHolder(inflate(LayoutInflater.from(parent.context), parent, false))
override fun getItemCount() = list.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(position)
inner class ViewHolder(private val binding: ListItemTwoTxtImgBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(position: Int) {
binding.user = list[position]
}
}
}
val layoutManager = LinearLayoutManager(this)
recyclerView.layoutManager = layoutManager
val list = mutableListOf(User("Kavan", "Mevada"), User("Damini", "Tripathi"))
// specify an adapter (see also next example)
val mAdapter = ListAdapter(list)
recyclerView.adapter = mAdapter
class User(val firstName: String, val lastName: String)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment