[英]Where to declare RecyclerView, RecyclerView.Adapter and RecyclerView.LayoutManager?
[英]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.