打造RecyclerView的万能适配器
2016-09-18 15:35
441 查看
public class RecyclerViewHolder extends RecyclerView.ViewHolder { private SparseArray<View> mViews;//集合类,layout里包含的View,以view的id作为key,value是view对象 private Context mContext;//上下文对象 public RecyclerViewHolder(Context ctx, View itemView) { super(itemView); mContext = ctx; mViews = new SparseArray<View>(); } private <T extends View> T findViewById(int viewId) { View view = mViews.get(viewId); if (view == null) { view = itemView.findViewById(viewId); mViews.put(viewId, view); } return (T) view; } public View getView(int viewId) { return findViewById(viewId); } public TextView getTextView(int viewId) { return (TextView) getView(viewId); } public Button getButton(int viewId) { return (Button) getView(viewId); } public ImageView getImageView(int viewId) { return (ImageView) getView(viewId); } public ImageButton getImageButton(int viewId) { return (ImageButton) getView(viewId); } public EditText getEditText(int viewId) { return (EditText) getView(viewId); } public RecyclerViewHolder setText(int viewId, String value) { TextView view = findViewById(viewId); view.setText(value); return this; } public RecyclerViewHolder setBackground(int viewId, int resId) { View view = findViewById(viewId); view.setBackgroundResource(resId); return this; } public RecyclerViewHolder setClickListener(int viewId, View.OnClickListener listener) { View view = findViewById(viewId); view.setOnClickListener(listener); return this; } }
<pre name="code" class="java">public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<RecyclerViewHolder> {protected final List<T> mData;protected final Context mContext;protected LayoutInflater mInflater;private OnItemClickListener mClickListener;private OnItemLongClickListener mLongClickListener;public BaseRecyclerAdapter(Context ctx, List<T> list) {mData = (list != null) ? list : new ArrayList<T>();mContext = ctx;mInflater = LayoutInflater.from(ctx);}@Overridepublic RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {final RecyclerViewHolder holder = new RecyclerViewHolder(mContext,mInflater.inflate(getItemLayoutId(viewType), parent, false));if (mClickListener != null) {holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mClickListener.onItemClick(holder.itemView, holder.getLayoutPosition());}});}if (mLongClickListener != null) {holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {mLongClickListener.onItemLongClick(holder.itemView, holder.getLayoutPosition());return true;}});}return holder;}@Overridepublic void onBindViewHolder(RecyclerViewHolder holder, int position) {bindData(holder, position, mData.get(position));}@Overridepublic int getItemCount() {return mData.size();}public void add(int pos, T item) {mData.add(pos, item);notifyItemInserted(pos);}public void delete(int pos) {mData.remove(pos);notifyItemRemoved(pos);}public void setOnItemClickListener(OnItemClickListener listener) {mClickListener = listener;}public void setOnItemLongClickListener(OnItemLongClickListener listener) {mLongClickListener = listener;}abstract public int getItemLayoutId(int viewType);abstract public void bindData(RecyclerViewHolder holder, int position, T item);public interface OnItemClickListener {public void onItemClick(View itemView, int pos);}public interface OnItemLongClickListener {public void onItemLongClick(View itemView, int pos);}}使用:collegeAdapter=new BaseRecyclerAdapter(getActivity(),myCollegeBean) {@Overridepublic int getItemLayoutId(int viewType) {return R.layout.item_college;}@Overridepublic void bindData(RecyclerViewHolder holder, int position, Object item) {MytCollegeBean bean= (MytCollegeBean) item;InfoUtils.setPicture(mContext, holder.getImageView(R.id.college_vp_images),bean.thumb, R.mipmap.app_default_icon);holder.setText(R.id.college_name,bean.name);holder.setText(R.id.college_info,bean.description);}};点击事件:collegeAdapter.setOnItemClickListener(new BaseRecyclerAdapter.OnItemClickListener() {@Overridepublic void onItemClick(View itemView, int pos) {Intent intent = new Intent(getActivity(), CollegeDetailsActivity.class);intent.putExtra(Constant.ICollege.COLLEGE_NAME,myCollegeBean.get(pos).name);intent.putExtra(Constant.ICollege.COLLEGE_ID,myCollegeBean.get(pos).id);startActivity(intent);}});
相关文章推荐
- 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
- 为RecyclerView打造万能适配器,点击事件,5.0水波纹点击效果
- 一步步打造Android RecyclerView万能适配器
- 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
- 【工具类】打造万能的Listview、GridView和ViewPager和RecyclerView的适配器
- (再次更新)打造RecyclerView万能适配器,上拉刷新,下拉加载
- Android 打造自己的解耦JavaBean的RecyclerView万能适配器(三)
- Data Binding 打造RecyclerView 万能适配器
- 为RecyclerView打造万能适配器
- 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
- android 用mvp模式来架构自己的app+打造Recyclerview万能适配器
- Databinding打造RecyclerView万能适配器
- 打造android偷懒神器———RecyclerView的万能适配器
- 为RecyclerView打造简单易用扩展性高的万能适配器
- Android打造万能适配器--RecyclerView
- Android进阶之通用RecyclerView适配器打造方法
- RecyclerView万能适配器以及点击事件
- RecyclerView万能适配器,点击事件,分割线,间距等写法
- 开源框架BaseRecyclerViewAdapterHelper使用——RecyclerView万能适配器
- 打造RecyclerView的通用适配器