ヘッダーとフッターに別々のレイアウトを追加して、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にアクセスできません。私にできることはありますか?
MyAdapterのコンストラクタを次のように作成します。
MyAdapter myAdapter=new MyAdapter(context,list,mLayoutManager);
別のアプローチ
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
this.recyclerView = recyclerView;
}