Quero implementar um layout semelhante a uma grade com cabeçalhos de seção. Imagine https://github.com/TonicArtos/StickyGridHeaders
O que faço agora:
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);
Agora, tanto os itens regulares quanto os cabeçalhos têm span size igual a 1. Como faço para resolver isso?
android
android-support-library
android-recyclerview
gridlayoutmanager
Igor Filippov
fonte
fonte
mAdapter.getItemViewType(position)
está retornando o valor correto?Respostas:
O problema era que o cabeçalho deveria ter o tamanho do intervalo 2 e o item regular deveria ter o tamanho do intervalo 1. Portanto, as implementações corretas são:
fonte
O cabeçalho deve ter um intervalo igual à contagem do intervalo de toda a lista.
fonte
Resposta à minha própria pergunta: Substitua getSpanSizeLookup () da Activity após configurar o adaptador.
fonte