XRecyclerView 下拉原理

xiaoxiao2021-02-27  344

下拉,上拉的菜单都是普通的viewholder。靠position来判断,是否产生哪种viewholder。

@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_REFRESH_HEADER) { 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; }

AVLoadingIndicatorView的setVisibility的目的,当view

    @Override

public void setVisibility(int v) { Log.e("xiayu","setVisibility v"+v); if (getVisibility() != v) { super.setVisibility(v); if (v == GONE || v == INVISIBLE) { mIndicatorController.setAnimationStatus(BaseIndicatorController.AnimStatus.END); } else { mIndicatorController.setAnimationStatus(BaseIndicatorController.AnimStatus.START); } } }

转载请注明原文地址: https://www.6miu.com/read-3019.html

最新回复(0)