섹션 헤더로 그리드와 같은 레이아웃을 구현하고 싶습니다. https://github.com/TonicArtos/StickyGridHeaders를 생각해보십시오.
내가 지금하는 일 :
mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return 1;
case MyAdapter.TYPE_ITEM:
return 2;
default:
return -1;
}
}
});
mRecyclerView.setLayoutManager(mLayoutManager);
이제 일반 항목과 헤더의 스팬 크기가 1입니다. 어떻게 해결합니까?
답변
문제는 헤더의 범위 크기가 2이고 일반 항목의 범위 크기가 1이어야한다는 것입니다. 따라서 올바른 구현은 다음과 같습니다.
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return 2;
case MyAdapter.TYPE_ITEM:
return 1;
default:
return -1;
}
}
});
답변
헤더는 전체 목록의 범위 수와 동일한 범위를 가져야합니다.
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return mLayoutManager.getSpanCount();
case MyAdapter.TYPE_ITEM:
return 1;
default:
return -1;
}
}
});
답변
내 질문에 대한 대답 : 어댑터를 설정 한 후 Activity에서 getSpanSizeLookup ()을 재정의하십시오.