1、创建BaseViewHolder
public class BaseViewHolder extends RecyclerView.ViewHolder {
public BaseViewHolder(@NonNull View itemView) {
super(itemView);
}
public <T extends View> T getChildView(int id){
return (T) itemView.findViewById(id);
}
public TextView setText(int viewId,String text){
TextView textView = getChildView(viewId);
textView.setText(text);
return textView;
}
public boolean isChecked(int viewId){
CheckBox checkBox = getChildView(viewId);
boolean checked = checkBox.isChecked();
return checked;
}
public ImageView setPicture(int viewId,String url){
ImageView imageView = getChildView(viewId);
Glide.with(itemView.getContext()).load(url).into(imageView);
return imageView;
}
public ImageView setCirclePicture(int viewId,String url){
ImageView imageView = getChildView(viewId);
Glide.with(itemView.getContext()).load(url).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(imageView);
return imageView;
}
public ImageView setCircularBeadPicture(int viewId,String url,int angle){
ImageView imageView = getChildView(viewId);
Glide.with(itemView.getContext()).load(url).apply(RequestOptions.bitmapTransform(new RoundedCorners(angle))).into(imageView);
return imageView;
}
public View setVisibility(int viewId,int i){
View view = getChildView(viewId);
view.setVisibility(i);
return view;
}
}
2、创建BaseRecyclerAdapter
public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {
private static final String TAG = BaseRecyclerAdapter.class.getSimpleName();
protected Context mContext;
protected List<T> mData;
protected LayoutInflater mInflater;
protected int lauoutRes;
public BaseRecyclerAdapter(Context mContext, List<T> mData, int lauoutRes) {
this.mContext = mContext;
this.mData = mData;
this.lauoutRes = lauoutRes;
this.mInflater = LayoutInflater.from(mContext);
}
public void refrensh(List<T> data) {
try {
this.mData.clear();
this.mData.addAll(data);
notifyDataSetChanged();
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "refrensh: " + e.getMessage());
}
}
@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new BaseViewHolder(mInflater.inflate(lauoutRes, parent, false));
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
onBindData(holder, mData.get(position), position);
}
protected abstract void onBindData(BaseViewHolder holder, T data, int position);
@Override
public int getItemCount() {
return mData == null ? 0 : mData.size();
}
}
3、创建适配器
public class ExerciseAdapter extends BaseRecyclerAdapter<String> {
private List<String> list;
public ExerciseAdapter(Context mContext, List<String> mData, int lauoutRes) {
super(mContext, mData, lauoutRes);
this.list = mData;
}
@Override
protected void onBindData(BaseViewHolder holder, String data, int position) {
}
}
4、使用
List<String> list = new List;
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this) {
@Override
public boolean canScrollVertically() {
return false;
}
};
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
rv.setLayoutManager(linearLayoutManager);
ExerciseAdapter exerciseAdapter = new ExerciseAdapter(this, list, R.layout.item) {
@Override
protected void onBindData(BaseViewHolder holder, String, int position) {
super.onBindData(holder, data, position);
holder.setCircularBeadPicture(R.id.item_iv, data, 30);
holder.setText(R.id.item_tv, data);
holder.itemView.setOnClickListener(new NoMoreClickListener() {
@Override
protected void OnMoreClick(View view) {
Toast.makeText(this, "" + data, Toast.LENGTH_SHORT).show();
}
});
}
};
rv.setAdapter(exerciseAdapter);