Universal Adapter
Code
package com.example.day15_lesson.Lesson;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
public abstract class MyAdapter<T> extends RecyclerView.Adapter<BaseHolder> {
int layoutId;
ArrayList<T> list = new ArrayList<>();
public MyAdapter(int layoutId) {
this.layoutId = layoutId;
}
public void refresh(ArrayList<T>list ){
this.list.addAll(list);
notifyDataSetChanged();
}
public abstract void bind(BaseHolder holder, int i);
@NonNull
@Override
public BaseHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(layoutId, viewGroup, false);
return new BaseHolder(view);
}
@Override
public void onBindViewHolder(@NonNull BaseHolder baseHolder, int i) {
bind(baseHolder, i);
}
@Override
public int getItemCount() {
return list.size();
}
}
## head termination code
package com.example.day15.lesson;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.day15.R;
import java.util.List;
public class RvHFAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final LayoutInflater mLayoutInflater;
private Context mContext;
private List<String> mData;
private final static int ITEM_HEADER=0;
private final static int ITEM_CONTENT=1;
private final static int ITEM_FOOT=2;
/**
* 头布局和尾布局的数量
*/
private int mHeader=1;
private int mFoot=1;
public RvHFAdapter(Context context, List<String> data) {
mContext = context;
mData = data;
mLayoutInflater = LayoutInflater.from(context);
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType==ITEM_CONTENT){
View view = mLayoutInflater.inflate(R.layout.item_rv_linear, parent, false);
return new ViewHolder(view);
}
if (viewType==ITEM_HEADER){
View view = mLayoutInflater.inflate(R.layout.header_rv_linear, parent, false);
return new HeaderViewHolder(view);
}
if (viewType==ITEM_FOOT){
View view = mLayoutInflater.inflate(R.layout.footer_rv_linear, parent, false);
return new FooterViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//Log.e("MMM", "onBindViewHolder: "+position);
if (holder instanceof ViewHolder){
((ViewHolder) holder).tvText.setText(mData.get(position-mHeader));
}
}
@Override
public int getItemCount() {
//固定数目,一个头,一个尾
return mData.size()+mHeader+mFoot;
}
@Override
public int getItemViewType(int position) {
if (mHeader!=0&&position<mHeader){
return ITEM_HEADER;
}
if (mFoot!=0&&position>=mData.size()+mHeader){
return ITEM_FOOT;
}
return ITEM_CONTENT;
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView tvText;
public ViewHolder(View itemView) {
super(itemView);
tvText=itemView.findViewById(R.id.show);
}
}
class HeaderViewHolder extends RecyclerView.ViewHolder {
public HeaderViewHolder(View itemView) {
super(itemView);
}
}
class FooterViewHolder extends RecyclerView.ViewHolder {
public FooterViewHolder(View itemView) {
super(itemView);
}
}
}
```