4

RecyclerViewは、ヘッダーとフッターに別々のレイアウトを追加してカスタマイズしました。私は、アダプタクラスのヘッダ、フッタ、リストアイテムのプロパティを決定するための定数を作成しました。また、ViewHolderパターンを作成し、そのビュータイプに基づいて表示するレイアウトを割り当てました。私はオーバーライドgetItemViewTypeメソッドによって配列の最後の位置に0番目の位置とフッターにヘッダを固定しました。RecyclerView.AdapterからLayoutManagerにアクセスしてscrollToPositionを取得する方法は?

私はフッター要素のクリック可能にしたいので、私はsetOnClickListener(new View.OnClickListener())を割り当て、onClick(view: View)

私の目標は、フッターとscrollToPosition 0または1(0 =ヘッダ、1 =最初の項目要素)をクリックすることで上書きしました。

MyAdapter定義です:recyclerView.getLayoutManager().scrollToPosition(position)

残念ながら、私は私のアダプタクラスからのLayoutManagerにアクセスすることはできません:私はちょうどこれを行うために必要な読み

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() 
     } 
    }) 
    ... 
} 
... 

。私は何ができるのですか?

+0

パスLayoutManage –

答えて

3

MyAdapterのコンストラクタを次のように作成します。

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

アダプタにアダプタのコンストラクタを使用して別のアプローチ

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
    this.recyclerView = recyclerView; 
} 
関連する問題