package cn.flightfeather.thirdappmodule.adapter;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* @author riku
*
通用型recyclerview适配器,创建时通过完成回调函数bindView可直接实现简单的列表
*/
public abstract class AllRecyclerViewAdapter extends RecyclerView.Adapter {
private List mData;//显示数据
private int mLayoutRes;//页面布局
private Context context;
private List isSelectedlist;
protected AllRecyclerViewAdapter(List mData, int mLayoutRes, Context context) {
super();
this.mData = mData;
this.mLayoutRes = mLayoutRes;
this.context = context;
this.isSelectedlist = new ArrayList<>();
if (mData != null) {
for (int i = 0; i < mData.size(); i++) {
isSelectedlist.add(false);
}
}
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(mLayoutRes, parent, false);
return new MyViewHolder(view, context);
}
@Override
public void onBindViewHolder(@NonNull AllRecyclerViewAdapter.MyViewHolder holder, int position) {
if (mData == null) return;
if (isSelectedlist.size() != mData.size()) {
isSelectedlist.clear();
for (int i = 0; i.MyViewHolder holder, T obj, boolean isSelected, int position);//回调,自定义绑定的内容
public class MyViewHolder extends RecyclerView.ViewHolder {
private SparseArray mViews; //存储ListView 的 item中的View
// private View item; //存放convertView
// private int position; //游标
private Context context; //Context上下文
public MyViewHolder(View itemView, Context context) {
super(itemView);
this.context = context;
mViews = new SparseArray<>();
}
@SuppressWarnings("unchecked")
private T getView(int id) {
T t = (T) mViews.get(id);
if (t == null) {
t = (T) itemView.findViewById(id);
mViews.put(id, t);
}
return t;
}
/**
* 设置文字
* @param id 控件id
* @param text 文本内容
* @return
*/
public MyViewHolder setText(@IdRes int id, CharSequence text) {
View view = getView(id);
if (view instanceof TextView){
((TextView) view).setText(text);
}
return this;
}
/**
* 获取view
* @param id
* @return
*/
public K getViewById(@IdRes int id) {
return getView(id);
}
/**
* 设置文字
* @param id 控件id
* @param res 文本内容
* @return
*/
public MyViewHolder setText(int id, @StringRes int res) {
View view = getView(id);
if (view instanceof TextView){
((TextView) view).setText(res);
}
return this;
}
/**
* 获取文字
* @param id 控件id
* @return
*/
public String getText(int id) {
View view = getView(id);
if (view instanceof TextView){
return ((TextView) view).getText().toString();
}
return "";
}
/**
* 设置文字颜色
* @param id 控件id
* @param color
* @return
*/
public MyViewHolder setTextColor(int id, int color){
View view = getView(id);
if (view instanceof TextView){
((TextView) view).setTextColor(color);
}
return this;
}
/**
* 设置文字大小
* @param id
* @param size
* @return
*/
public MyViewHolder setTextSize(int id, float size){
View view = getView(id);
if (view instanceof TextView){
((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PT, size);
}
return this;
}
/**
* 设置图片
* @param id 控件id
* @param drawableRes 图片路径
* @return
*/
public MyViewHolder setImageResource(int id, int drawableRes) {
View view = getView(id);
if (view instanceof ImageView) {
((ImageView) view).setImageResource(drawableRes);
}
return this;
}
public MyViewHolder setImageDrawable(int id, Drawable drawable) {
View view = getView(id);
if (view instanceof ImageView) {
((ImageView) view).setImageDrawable(drawable);
}
return this;
}
public MyViewHolder setImageBitmap(@IdRes int id, Bitmap bitmap) {
View view = getView(id);
if (view instanceof ImageView) {
((ImageView) view).setImageBitmap(bitmap);
}
return this;
}
public MyViewHolder setBackgroudResource(int id, int drawableRes) {
View view = getView(id);
view.setBackgroundResource(drawableRes);
return this;
}
public MyViewHolder setBackgroudTint(int id, int color) {
View view = getView(id);
view.setBackgroundTintList(ColorStateList.valueOf(color));
return this;
}
public MyViewHolder setVisibility(int id, int vis) {
View view = getView(id);
view.setVisibility(vis);
return this;
}
public int getVisibility(int id) {
View view = getView(id);
return view.getVisibility();
}
/**
* 设置点击监听事件
* @param listener 监听事件
* @return
*/
public MyViewHolder setOnClickListener(int id, View.OnClickListener listener) {
getView(id).setOnClickListener(listener);
return this;
}
public MyViewHolder setOnItemClickListener(View.OnClickListener listener) {
this.itemView.setOnClickListener(listener);
return this;
}
/**
* 设置选中
* @param id
* @param selected
* @return
*/
public MyViewHolder setSelected(int id, boolean selected) {
View view = getView(id);
view.setSelected(selected);
return this;
}
/**
* 获取选中状态
* @param id
* @return
*/
public boolean isSelected(int id) {
View view = getView(id);
return view.isSelected();
}
/**
* 设置itemView是否选中
* @param selected
* @return
*/
public MyViewHolder setItemSelected(boolean selected) {
this.itemView.setSelected(selected);
return this;
}
/**
* 设置透明度
* @param id
* @param alpha
* @return
*/
public MyViewHolder setAlpha(@IdRes int id, float alpha) {
View view = getView(id);
view.setAlpha(alpha);
return this;
}
/**
* 设置能否点击
* @param id
* @param isEnabled
* @return
*/
public MyViewHolder setEnabled(int id, boolean isEnabled){
getView(id).setEnabled(isEnabled);
return this;
}
public MyViewHolder setChecked(int id, boolean checked) {
View view = getView(id);
if (view instanceof CheckBox) {
((CheckBox) view).setChecked(checked);
}
return this;
}
}
}