简单的写一个Adapter基类,不用每次写adapter都调用一堆方法。
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 RecyclerAdapter extends RecyclerView.Adapter<RecyclerViewHolder> {
protected List _data;
public ListState listState = ListState.NONE;
public enum ListState {
NONE, REFRESHING, LOADMOREING;
}
public List getData() {
return _data == null ? (_data = new ArrayList()) : _data;
}
@SuppressWarnings("rawtypes")
public void setData(List data) {
_data = data;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
if (_data == null) {
return 0;
}
return _data.size();
}
public Object getItem(int position) {
if (_data != null && _data.size() > position) {
return _data.get(position);
}
return null;
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerViewHolder holder = new RecyclerViewHolder(getHolderView(parent,viewType));
return holder;
}
public abstract View getHolderView(ViewGroup parent, int position);
}
然后再简单来搞个通用的ViewHolder,省得每次都要写一堆Viewholder
package com.chenghao.ch65wanh5.base.adapter;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.util.SparseArray;
import android.view.View;
import android.widget.Adapter;
public class RecyclerViewHolder extends ViewHolder {
private SparseArray<View> views;
private View convertView;
public RecyclerViewHolder(View convertView) {
super(convertView);
this.views = new SparseArray<View>();
this.convertView = convertView;
}
public <T extends View> T getView(int viewId) {
View view = views.get(viewId);
if (view == null) {
view = convertView.findViewById(viewId);
views.put(viewId, view);
}
return (T) view;
}
public View getConvertView() {
return convertView;
}
}
要调用时继承
RecyclerAdapter,然后在getHolderView方法里绑定布局,而后就是普通的Recycler的adapter用法了。