반응형
SpanSizeLookup을 사용하여 GridLayoutManager의 항목에 대한 범위 설정
섹션 헤더로 그리드와 같은 레이아웃을 구현하고 싶습니다. 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 ()을 재정의하십시오.
반응형
'Programing' 카테고리의 다른 글
bash에서 기능 키를 명령에 어떻게 바인딩합니까? (0) | 2020.09.18 |
---|---|
Android Spanned, SpannedString, Spannable, SpannableString 및 CharSequence (0) | 2020.09.18 |
gcloud와 minikube간에 kubectl 클러스터를 전환하는 방법 (0) | 2020.09.18 |
WWW 여부 WWW, 기본 사이트 이름으로 무엇을 선택해야합니까? (0) | 2020.09.18 |
목록 내에서 항목을 이동 하시겠습니까? (0) | 2020.09.18 |