Как получить доступ к LayoutManager из RecyclerView.Adapter, чтобы получить scrollToPosition?
Я настроил RecyclerView
добавив отдельные макеты для верхнего и нижнего колонтитула. Я создал константы для определения свойства заголовка, нижнего колонтитула и элемента списка в классе адаптера. Я также создал шаблон ViewHolder и назначил макеты для отображения на основе типа представления. Я установил верхний колонтитул в нулевой позиции и нижний колонтитул в последней позиции массива путем переопределения getItemViewType
метод.
Я хочу сделать элемент нижнего колонтитула кликабельным, поэтому я назначаю setOnClickListener(new View.OnClickListener())
и переписал onClick(view: View)
Моя цель - нажать на нижний колонтитул и scrollToPosition
0 или 1 (0 = заголовок, 1 = первый элемент элемента).
Это определение MyAdapter:
class MyAdapter(context: Context, data: Array[String]) extends RecyclerView.Adapter[RecyclerView.ViewHolder]
...
override def onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int): Unit = holder match {
...
case holder:FooterViewHolder =>
holder.backToTop.setOnClickListener(new View.OnClickListener() {
override def onClick (view: View) {
backToTop(???)
Toast.makeText (context, "Clicked Footer", Toast.LENGTH_SHORT).show()
}
})
...
}
...
Я читаю, мне просто нужно сделать это: recyclerView.getLayoutManager().scrollToPosition(position)
К сожалению, я не могу получить доступ к LayoutManager из своего класса Adapter. Есть идеи, что я могу сделать?
2 ответа
Сделайте конструктор MyAdapter следующим образом.
MyAdapter myAdapter=new MyAdapter(context,list,mLayoutManager);
Другой подход
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
this.recyclerView = recyclerView;
}