美文网首页
XRecyclerView

XRecyclerView

作者: 陈萍儿Candy | 来源:发表于2020-11-18 21:22 被阅读0次

    内部有一个WrapAdapter,我们传入的adapter会在这个WrapAdapter里面

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == TYPE_REFRESH_HEADER) {
            // TODO: 2020/11/18 6:25 PM chenyanping onCreateViewHolder 如果我设置pullRefreshEnabled为false,mRefreshHeader为null,会异常吗
            return new SimpleViewHolder(mRefreshHeader);
        } else if (isHeaderType(viewType)) {
            return new SimpleViewHolder(getHeaderViewByType(viewType));
        } else if (viewType == TYPE_FOOTER) {
            return new SimpleViewHolder(mFootView);
        }
        return adapter.onCreateViewHolder(parent, viewType);
    }
    
    @Override
    public int getItemViewType(int position) {
        int adjPosition = position - (getHeadersCount() + 1);
        if (isRefreshHeader(position)) {
            return TYPE_REFRESH_HEADER;
        }
        if (isHeader(position)) {
            position = position - 1;
            return sHeaderTypes.get(position);
        }
        if (isFooter(position)) {
            return TYPE_FOOTER;
        }
        int adapterCount;
        if (adapter != null) {
            adapterCount = adapter.getItemCount();
            if (adjPosition < adapterCount) {
                int type =  adapter.getItemViewType(adjPosition);
                if(isReservedItemViewType(type)) {
                    throw new IllegalStateException("XRecyclerView require itemViewType in adapter should be less than 10000 " );
                }
                return type;
            }
        }
        return 0;
    }
    
    

    默认第一个item就是刷新头,所以外面用XrecyclerView时想刷新pos位置的item,需要设置pos+getHeadersCount() + 1;其中1是XrecyclerView的刷新头,getHeadersCount()是你加入的headview的个数

    public boolean isRefreshHeader(int position) {
        return position == 0;
    }
    
    public boolean isHeader(int position) {
        return position >= 1 && position < mHeaderViews.size() + 1;
    }
    
    public int getHeadersCount() {
        return mHeaderViews.size();
    }
    

    相关文章

      网友评论

          本文标题:XRecyclerView

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