美文网首页
RecyclerView通过GridLayoutManager实

RecyclerView通过GridLayoutManager实

作者: ana生 | 来源:发表于2017-05-27 13:26 被阅读0次

    今天来给大家介绍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);
                             }
                         });
    

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

    相关文章

      网友评论

          本文标题:RecyclerView通过GridLayoutManager实

          本文链接:https://www.haomeiwen.com/subject/eykqfxtx.html