簡體   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