如何从 RecyclerView.Adapter 访问 LayoutManager 以获得 scrollToPosition?
How to access LayoutManager from RecyclerView.Adapter to get scrollToPosition?
我通过为页眉和页脚添加单独的布局来自定义 RecyclerView
。我创建了常量来确定适配器 class 中页眉、页脚和列表项的 属性。我还创建了一个 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 class。有什么想法吗?
MyAdapter 的构造函数如下。
MyAdapter myAdapter=new MyAdapter(context,list,mLayoutManager);
另一种方法
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
this.recyclerView = recyclerView;
}
我通过为页眉和页脚添加单独的布局来自定义 RecyclerView
。我创建了常量来确定适配器 class 中页眉、页脚和列表项的 属性。我还创建了一个 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 class。有什么想法吗?
MyAdapter 的构造函数如下。
MyAdapter myAdapter=new MyAdapter(context,list,mLayoutManager);
另一种方法
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
this.recyclerView = recyclerView;
}