美文网首页
RecyclerView在GridLayoutManager添加

RecyclerView在GridLayoutManager添加

作者: 苍蝇的梦 | 来源:发表于2016-11-22 18:01 被阅读209次

    2016-11-22遇到的一点小问题

    之前添加头部,ListView是直接addHead,很方便。换成RecyclerView没有这个方法,则是在自定义的RecyclerView.Adapter<RecyclerView.ViewHolder>
    在*onCreateViewHolder(ViewGroup parent, int viewType)方法里面返回不同的RecyclerView.ViewHolder

     @Overridepublic 
    RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());   
        if (viewType == TYPE_FOOT) {        
            View view = inflater.inflate(R.layout.a, parent, false);        
            return new FootHolder(view);   
         } else {        
            View view = inflater.inflate(R.layout.b, parent, false);       
            return new Holder(view);   
         }
    }
    

    然后在onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position)方法里分别设置数据

    if (getItemViewType(position) == TYPE_FOOT) {
    }else{
    }
    

    这种做法和之前的ListView设置不同item布局使用getItemViewType()类似。

    当然,因为之前一直使用的LinearLayoutManager,所以这样没问题,不过今天用到了GridLayoutManager(context, 2),就需要使用setSpanSizeLookup

    final GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 2);
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {    
        @Override    
        public int getSpanSize(int position) {
            return position == 0 ? gridLayoutManager.getSpanCount():1;    
            }
        }
    );
    mRecycler.setLayoutManager(gridLayoutManager);
    mRecycler.setAdapter(mAdapter);
    

    因为我只在第0行使用head,所以就写死了,第0行占用Span为2,其他的为1项。

    关于这个在网上找了下,真不好找,搜出来全是一堆github的项目,只是一个地方用到,太麻烦了,还好在这边看到了 http://www.open-open.com/lib/view/open1437662138631.html 感谢,顺便记录一下。

    关于StaggeredGridLayoutManager现在还没用到,不知道是不是也这样。

    private RecyclerView.ViewHolder getRecyclerHolder(int position) {
        return mRecycler.getChildViewHolder(mRecycler.getLayoutManager().getChildAt(position));
    }

    相关文章

      网友评论

          本文标题:RecyclerView在GridLayoutManager添加

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