package licola.demo.com.huabandemo.Widget.MyRecyclerview; import android.support.v7.widget.RecyclerView; import android.view.View; /** * Created by cundong on 2015/10/22. * <p/> * RecyclerView设置Header/Footer所用到的工具类 */ public class RecyclerViewUtils { /** * 设置HeaderView * * @param recyclerView * @param view */ public static void addHearView(RecyclerView recyclerView, View view) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter == null || !(outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter)) { return; } HeaderAndFooterRecyclerViewAdapter headerAndFooterAdapter = (HeaderAndFooterRecyclerViewAdapter) outerAdapter; if (headerAndFooterAdapter.getHeaderViewsCount() == 0) { headerAndFooterAdapter.addHeaderView(view); } } /** * 设置FooterView * * @param recyclerView * @param view */ public static void addFootView(RecyclerView recyclerView, View view) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter == null || !(outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter)) { return; } HeaderAndFooterRecyclerViewAdapter headerAndFooterAdapter = (HeaderAndFooterRecyclerViewAdapter) outerAdapter; if (headerAndFooterAdapter.getFooterViewsCount() == 0) { headerAndFooterAdapter.addFooterView(view); } } /** * 移除FooterView * * @param recyclerView */ public static void removeFooterView(RecyclerView recyclerView) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter) { int footerViewCounter = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getFooterViewsCount(); if (footerViewCounter > 0) { View footerView = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getFooterView(); ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).removeFooterView(footerView); } } } /** * 移除HeaderView * * @param recyclerView */ public static void removeHeaderView(RecyclerView recyclerView) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter) { int headerViewCounter = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getHeaderViewsCount(); if (headerViewCounter > 0) { View headerView = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getHeaderView(); ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).removeFooterView(headerView); } } } /** * 请使用本方法替代RecyclerView.ViewHolder的getLayoutPosition()方法 * * @param recyclerView * @param holder * @return */ public static int getLayoutPosition(RecyclerView recyclerView, RecyclerView.ViewHolder holder) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter) { int headerViewCounter = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getHeaderViewsCount(); if (headerViewCounter > 0) { return holder.getLayoutPosition() - headerViewCounter; } } return holder.getLayoutPosition(); } /** * 请使用本方法替代RecyclerView.ViewHolder的getAdapterPosition()方法 * * @param recyclerView * @param holder * @return */ public static int getAdapterPosition(RecyclerView recyclerView, RecyclerView.ViewHolder holder) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof HeaderAndFooterRecyclerViewAdapter) { int headerViewCounter = ((HeaderAndFooterRecyclerViewAdapter) outerAdapter).getHeaderViewsCount(); if (headerViewCounter > 0) { return holder.getAdapterPosition() - headerViewCounter; } } return holder.getAdapterPosition(); } }