RecyclerView通过GridLayoutManager实现多样式布局

今天来给大家介绍recyclerview关于gridlayoutmanager的用法,废话不多说,上效果图:

![P2Y]J)Q`0G%6RA6QXEWSHA.png

我们知道recyclerview实现GridView效果只需配置一下参数就行了

GridLayoutManager layoutManage = new GridLayoutManager(getContext(), 2);
recycerView.setLayoutManager(layoutManage);

我们会注意到GridLayoutManager里边有个setSpanSizeLookup方法,本篇的重点就是这个方法(这个方法具体意义大家可以网上搜索,会有很多相关介绍,以及通过它实现一些复杂的布局,再次不做过多讨论)

 layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
             @Override
             public int getSpanSize(int position) {
                 return 0;
             }
         });

其实getSpanSize返回值就是控制每行有几列的,根据这个思路我们不妨试试。因为recyclerview填充数据是根据adapter实现的,我们就把给adapter的数据源同样在setSpanSizeLookup这个方法里边判断一下不就行了吗?
根据这个思路于是有了下面的代码

   /**
     * 如果单个item显示的字数大于指定某个值就显示一列  默认2列
     */

     //设置item数据大于多少字只显示一行  默认 超过九个字的程度只显示一列

     private static final int MAX = 9;


    private int setSpanSize(int position, List<TagBean> listEntities) {
        int count;
        if (listEntities.get(position).getTag_name().length() > MAX) {
            count = 2;
        } else {
            count = 1;
        }

        return count;
    }


    layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                         @Override
                         public int getSpanSize(int position) {
                             return setSpanSize(position,list);
                         }
                     });

核心代码就这么多,我们可以根据自己的需求随意定制样式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、开篇距离上次写文章已经有段时间了,说实话真不知道最近在忙些什么,现在沉下心来把最近项目中遇到的问题记录下来便于...
    lygttpod阅读 120,609评论 19 106
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,724评论 25 709
  • 又到了更新博文的时间了,最近在看一本很不错的心理学书籍,名字叫做 《拖延心理学》,封面长下面这样子 书的内容主要是...
    ec95b5891948阅读 57,737评论 38 472
  • 花儿盛开,总是惹人喜爱。 可谁想过,昨夜,它是怎样的? 光鲜背后的故事不为人知,花也好人也罢。 在没有盛开之...
    荒野里的牧人阅读 2,144评论 0 0
  • 看了一本小说 还是那种会被许多人吐槽的恶俗剧情 内容大概就是男女主大学相恋 而在毕业时候却因为一些原因而产生误会 ...
    我是九思阅读 2,833评论 0 0