2017-02-16 170 views
4

我通过为页眉和页脚添加单独的版面来自定义RecyclerView。我创建了常量来确定适配器类中的页眉,页脚和列表项的属性。我还创建了一个ViewHolder模式,并根据视图类型分配要显示的布局。我通过覆盖getItemViewType方法将头部固定在第零位和页尾位于数组的最后位置。如何从RecyclerView.Adapter访问LayoutManager以获取scrollToPosition?

我要让页脚元素点击,所以我给你一个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的。任何想法我可以做什么?

+0

通LayoutManage –

回答

3

使MyAdapter的构建器如下。

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

适配器使用适配器的构造函数的另一种方法

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