4

RecyclerView은 머리글과 바닥 글에 별도의 레이아웃을 추가하여 사용자 정의했습니다. 어댑터 클래스의 머리글, 바닥 글 및 목록 항목의 속성을 결정하기 위해 상수를 만들었습니다. 또한 ViewHolder 패턴을 생성하고 뷰 유형에 따라 표시 할 레이아웃을 지정합니다. 머리글을 0301 위치에두고 머리글을 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; 
}