美文网首页
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