RecyclerView添加footer、Header以及RecyclerView上拉加载
对RecyclerView和RecyclerView.Adapter进行简单封装以方便使用。
1. 添加Header、Footer
HeaderAndFooterAdapter.java
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
/**
* @param <C> ViewHolder for content data must extends {@link ContentViewHolder}
* @param <T> The data type extends {@link DataBean} that the adapter needs to add.
*
* @author zven
* @modify
* @email acxuer@gmail.com
* @since 2018/6/13 10:49
*/
public abstract class HeaderAndFooterAdapter<H extends HeaderAndFooterAdapter.HeaderViewHolder, C extends
HeaderAndFooterAdapter.ContentViewHolder, F extends HeaderAndFooterAdapter.FooterViewHolder, T extends DataBean>
extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
/**
* item type {header , content , footer}
*/
private static final int ITEM_TYPE_HEADER = 0;
private static final int ITEM_TYPE_CONTENT = 1;
private static final int ITEM_TYPE_FOOTER = 2;
@LayoutRes
private List<Integer> mHeaderView;
@LayoutRes
private List<Integer> mFooterView;
public HeaderAndFooterAdapter(Context context) {
mHeaderView = new ArrayList<>();
mFooterView = new ArrayList<>();
}
/**
* Only one HeaderView can be added, repeated additions will overwrite previous additions
* <p>
* 只能添加一个HeaderView,重复添加会覆盖之前的添加HeaderView.
* </p>
*
* @param layoutRes
*/
public void addHeaderView(@LayoutRes int layoutRes) {
mHeaderView.add(0, layoutRes);
}
public void removeHeaderView() {
mHeaderView.remove(0);
}
/**
* Only one FooterView can be added, repeated additions will overwrite previous additions.
* <p>
* 只能添加一个FooterView,重复添加会覆盖之前的添加FooterView.
* </p>
*
* @param layoutRes
*/
public void addFooterView(@LayoutRes int layoutRes) {
mFooterView.add(0, layoutRes);
}
public void removeFooterView() {
if (mFooterView.size() > 0) {
mFooterView.remove(0);
}
}