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();
}
}