| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.android.chmo.ui.adpater;
- 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;
- public abstract class BaseAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter {
- private List<View> headerViews;
- private List<View> footerViews;
- public BaseAdapter() {
- headerViews = new ArrayList<>();
- footerViews = new ArrayList<>();
- }
- public void addHeaderView(View view) {
- headerViews.add(view);
- }
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
- if (i < headerViews.size()) {
- return new HeaderFooterHolder(headerViews.get(i));
- } else if (i < (headerViews.size() + getDataCount())) {
- return getViewHolder(viewGroup, i - headerViews.size());
- } else {
- return new HeaderFooterHolder(footerViews.get(i - headerViews.size() - getDataCount()));
- }
- }
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
- if (i >= headerViews.size() && i < (headerViews.size() + getDataCount())) {
- updateViewHolder((VH) viewHolder, i - headerViews.size());
- }
- }
- @Override
- public int getItemCount() {
- return getDataCount() + headerViews.size() + footerViews.size();
- }
- @Override
- public int getItemViewType(int position) {
- return position;
- }
- protected abstract int getDataCount();
- protected abstract VH getViewHolder(@NonNull ViewGroup viewGroup, int position);
- protected abstract void updateViewHolder(@NonNull VH holder, int position);
- class HeaderFooterHolder extends RecyclerView.ViewHolder {
- public HeaderFooterHolder(@NonNull View itemView) {
- super(itemView);
- }
- }
- }
|