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; } } }