我使用StaggeredGridLayoutManager制作了RecyclerView,如下所示:
我需要在它上面添加一些TextView(如LinearLayoutManager中的一个colum)。它就像上面的LinearLayoutManager和底部的StaggeredGridLayoutManager。像这样:
我怎样才能实现这一目标?在这里真的很困惑,请帮忙。
更新2015年10月29日:
我在这里结合denis_lor和mato的答案解决了这个问题: Span multiple columns with RecyclerView
答案 0 :(得分:5)
密钥位于adapter
,您基本上依赖viewType
,然后决定viewholder
和layout
到inflate
的类型。这是一个例子:
private static final int TYPE_FIRST_ITEM = 0;
private static final int TYPE_ITEM = 1;
...
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_FIRST_ITEM) {
// inflate your view holder for the first item
} else {
// here inflate your view holder for all the other items
}
...
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_FIRST_ITEM;
} else {
return TYPE_ITEM;
}
}
所以基本上你有1 adapter
,2(或更多)viewHolder
等等。如果您的adapter
应该有两种layout
,则使用2 viewHolder
和布局,否则如果您还需要一个页脚layout
,则使用更多。
答案 1 :(得分:2)
滚动时你想要发生什么?
如果顶部视图仍然可见,您可以使用RecyclerView
将LinearLayout
与2个孩子TextView
和RecyclerView
打包在一起。
如果您想要滚动,可以使用LayoutManager.setSpanSizeLookup
,如下所示:
layoutManager.setSpanSizeLookup(new SpanSizeLookup() {
@Override
public int getSpanIndex(int position, int spanCount) {
return position % spanCount;
}
@Override
public int getSpanSize(int position) {
if (position != 0) {
return layoutManager.getSpanCount();
}
return 1;
}
});