Implementación de un RecyclerView
con los datos agrupados y con un encabezado representativo
private fun initRecyclerView() {
val mAdapter = MySectionAdapter(dummyData3())
recycler_view.setHasFixedSize(true)
recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
recycler_view.adapter = mAdapter
mAdapter.setOnItemClickListener(object : MySectionAdapter.ClickListener {
override fun onItemClick(v: View, position: Int) {
Log.v(TAG, "onItemClick $position")
Toast.makeText(
this@MainActivity,
"Clicked($position): ${mAdapter.getItem(position)}",
Toast.LENGTH_SHORT
).show()
}
})
}
Datos de demostración
private fun dummyData3(): List<Any> {
val myList = mutableListOf<Any>()
myList.add(SectionModel("Section 1"))
myList.add(MessageModel("Lorem ipsum dolor sit amet, consectetur adipiscing elit."))
myList.add(MessageModel("Aliquam gravida ligula vitae turpis sodales consectetur."))
myList.add(MessageModel("In sodales velit nec augue fringilla, a convallis quam vestibulum."))
myList.add(MessageModel("Nunc gravida dui in dui feugiat, non lobortis nisi aliquet."))
myList.add(MessageModel("Sed nec tortor imperdiet, consequat dui at, sagittis dui."))
myList.add(SectionModel("Section 2"))
myList.add(MessageModel("Duis vel tellus aliquet, finibus leo a, ultrices mi."))
myList.add(MessageModel("Maecenas mattis diam ac nibh egestas, quis suscipit metus porta."))
myList.add(MessageModel("Proin ut diam non lorem mollis porta ac nec ipsum."))
myList.add(MessageModel("Nunc egestas tellus dapibus quam lacinia, in pellentesque mi bibendum."))
myList.add(SectionModel("Section 3"))
myList.add(MessageModel("Integer fringilla libero in risus pharetra rutrum."))
myList.add(MessageModel("Mauris a nisi accumsan arcu lobortis luctus."))
return myList
}