NormalAdapter
通用的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]);
}
});