之前看一些APP时,发现首页布局大多很复杂,当时就在想这些复杂的布局时直接使用ListView或者RecyclerView
用不同的条目类型实现的,还是用ScrollView进行嵌套实现的呢?后来发现这两种其实都可以,只不过后来看到了
一篇博客才觉得用RecyclerView实现更加方便,用起来也更加舒爽!这篇博客就是liaoinstan大神的,地址我贴在
下面,大家可以去看看,这里我就把我使用的他的第二种方法贴出来进行展示.
liaoinstan 地址:http://blog.csdn.net/liaoinstan/article/details/52671101
这种方法主要是针对于GridLayoutManager网格布局管理器来进行设置的,因为GridLayoutManager可以设置 列数,而我们可以根据不同条目所占列数的不同来展示不同的条目,那如何来控制不同条目的所占的列数呢?
GridLayoutManager为我们提供了动态改变每个item所占列数的方法:
gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return gridManager.getSpanCount();
}
}
getSpanSize方法,返回值就表示当前item占多少列,例如如果我们列数设置的为3列,返回3就表示铺满,也
就是和列表一样了。
如图所示,我们给RecyclerView设置一个列数为6的GridLayoutManager,然后再动态地为不同部位的item分
别设置SpanSize为6(铺满)、3(1/2)、2(1/3)就行了
接下来我就来贴下我所写的代码:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
BookDisplayAdapter adapter = new BookDisplayAdapter(this, images, bookNames);
recyclerView.setAdapter(adapter);
下面是Adapter
public class BookDisplayAdapter extends RecyclerView.Adapter {
public static final int TYPE_HEADER = 1;