java - 如何从 RecyclerView.Adapter 访问 LayoutManager 以获得 scrollToPosition?

标签 java android scala android-recyclerview linearlayoutmanager

我通过为页眉和页脚添加单独的布局来自定义 RecyclerView。我创建了常量来确定适配器类中页眉、页脚和列表项的属性。我还创建了一个 ViewHolder 模式,并根据 View 类型分配要显示的布局。我通过重写 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;
}

关于java - 如何从 RecyclerView.Adapter 访问 LayoutManager 以获得 scrollToPosition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42274337/

相关文章:

java - 无法在 android studio 谷歌地图中获取标记和位置

java - 检查具有相同对象列表的对象列表

android - 在 Lollipop Web View 中下载对象 URL?

android - 为什么我在 xml 中写的文本不显示?

java - 设置字符串的行长度

java - IntelliJ 在同一项目文件夹中找不到文件

java - 这是使用 Java Streams 的正确方法吗?

java - 将日期字符串转换为整数数组

java - SBT:如何将类的实例打包为 JAR?

scala - 如何在scala中使用迭代器根据长度内存高效地做出决策