繁体   English   中英

如何从RecyclerView.Adapter访问LayoutManager以获取scrollToPosition?

[英]How to access LayoutManager from RecyclerView.Adapter to get scrollToPosition?

我通过为页眉和页脚添加单独的布局来自定义RecyclerView 我创建了常量来确定适配器类中的页眉,页脚和列表项的属性。 我还创建了一个ViewHolder模式,并根据视图类型指定要显示的布局。 我通过覆盖getItemViewType方法将标题固定在第0个位置和页脚最后位置的页脚。

我想使页脚元素可单击,所以我分配一个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)

不幸的是我无法从Adapter类访问LayoutManager。 任何想法我能做什么?

另一种方法

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    this.recyclerView = recyclerView;
}

使MyAdapter的构造函数如下。

 MyAdapter myAdapter=new MyAdapter(context,list,mLayoutManager);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM