通用的RecyclerView.Adapter

 package norwaya.android.com.adapterlibrary;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by admin on 2017/1/14.
 */

public class NormalAdapter<T> extends RecyclerView.Adapter<NormalAdapter.ViewHolder> {


List<T> list = new ArrayList<>();
LayoutInflater inflater;

OnCreateViewHolderListener mOnCreateViewHolderListener;
OnBindViewHolderListener mOnBindViewHolderListener;


public NormalAdapter() {
}
public static NormalAdapter newInstance(){
    return new NormalAdapter();
}
public NormalAdapter createView(OnCreateViewHolderListener mOnCreateViewHolderListener) {
    this.mOnCreateViewHolderListener = mOnCreateViewHolderListener;
    return this;
}

public NormalAdapter bindView(OnBindViewHolderListener mOnBindViewHolderListener) {
    this.mOnBindViewHolderListener = mOnBindViewHolderListener;
    return this;
}

public void bindSource(List<? extends T> list) {
    this.list = (List<T>) list;
    notifyDataSetChanged();
}

public interface OnCreateViewHolderListener {
    ViewHolder createViewHoler(ViewGroup parent, int viewType);
}

/**
 * Created by admin on 2017/1/14.
 */
public interface OnBindViewHolderListener {
    void onBindViewHolder(ViewHolder holder, int position);
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (mOnCreateViewHolderListener != null) {
        return mOnCreateViewHolderListener.createViewHoler(parent, viewType);
    }
    return null;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    if (mOnBindViewHolderListener != null) {
        mOnBindViewHolderListener.onBindViewHolder(holder, position);
    }
}

@Override
public int getItemCount() {
    return list.size();
}

public abstract static class ViewHolder extends RecyclerView.ViewHolder {

    public ViewHolder(View itemView) {
        super(itemView);
    }
}

}

Sample

NormalAdapter adapter = NormalAdapter.newInstance()
  .createView(new NormalAdapter.OnCreateViewHolderListener() {
        @Override
        public NormalAdapter.ViewHolder createViewHoler(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.recyclerview_item, parent, false);
            return new ViewHolder(view);
        }
    })
    .bindView(new NormalAdapter.OnBindViewHolderListener() {
        @Override
        public void onBindViewHolder(NormalAdapter.ViewHolder holder, int position) {
            ViewHolder viewHolder = (ViewHolder) holder;
            viewHolder.tv1.setText(position + "");
            viewHolder.tv2.setText(array[position]);
        }
    });