Как указать классу RecyclerView.Adapter начальное состояние?
Активити содержит RecyclerView. Данные в ArrayList. ArrayList содержит несколько сотен элементов. RecyclerView.Adapter подключает ArrayList к RecyclerView. При запуске активити на экране я вижу вертикальный список элементов из ArrayList. Самым верхним элементом экрана является самый первый элемент массива. Мне нужно добиться, чтобы при открытии активити RecyclerView сразу выводил самым верхним не первый элемент массива, а другой(например 50-й). Подскажите, как этого можно добиться?
Ответы (1 шт):
Автор решения: Cypher
→ Ссылка
Используйте RecyclerView.scrollToPosition().
Например у нас есть 10 элементов и нам надо открывать на пятом:
Activity:
class ScrollToPosActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_scroll_to_pos)
recycler_view.adapter = ScrollToPosAdapter(getDates())
recycler_view.scrollToPosition(5)
}
private fun getDates() = listOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
}
Adapter:
class ScrollToPosAdapter(private val dates: List<String>) :
RecyclerView.Adapter<ScrollToPosAdapter.ScrollToPosViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ScrollToPosViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.item_main, parent, false)
)
override fun onBindViewHolder(holder: ScrollToPosViewHolder, position: Int) {
holder.text.text = dates[position]
}
override fun getItemCount() = dates.size
class ScrollToPosViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val text: TextView = view.title
}
}
