package safeluck.drive.evaluation.adapter;
|
|
import android.util.SparseArray;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.TextView;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import java.util.List;
|
|
public abstract class QuickAdapter<T> extends RecyclerView.Adapter<QuickAdapter.VH>{
|
private List<T> mDatas;
|
public QuickAdapter(List<T> datas){
|
this.mDatas = datas;
|
}
|
|
public abstract int getLayoutId(int viewType);
|
|
@Override
|
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
|
return VH.get(parent,getLayoutId(viewType));
|
}
|
|
@Override
|
public void onBindViewHolder(VH holder, int position) {
|
convert(holder, mDatas.get(position), position);
|
}
|
|
@Override
|
public int getItemCount() {
|
return mDatas.size();
|
}
|
|
public abstract void convert(VH holder, T data, int position);
|
//更新数据
|
public void updateData(List<T> data) {
|
this.mDatas = data;
|
notifyDataSetChanged();
|
}
|
|
public static class VH extends RecyclerView.ViewHolder{
|
private SparseArray<View> mViews;
|
private View mConvertView;
|
|
private VH(View v){
|
super(v);
|
mConvertView = v;
|
mViews = new SparseArray<>();
|
}
|
|
public static VH get(ViewGroup parent, int layoutId){
|
View convertView = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
|
return new VH(convertView);
|
}
|
|
public <T extends View> T getView(int id){
|
View v = mViews.get(id);
|
if(v == null){
|
v = mConvertView.findViewById(id);
|
mViews.put(id, v);
|
}
|
return (T)v;
|
}
|
|
public void setText(int id, String value){
|
TextView view = getView(id);
|
view.setText(value);
|
}
|
}
|
}
|