国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用此Adapter,代碼量可大大減少

2019-11-09 14:26:35
字體:
來源:轉載
供稿:網友
public class MultiItemTypeAdapter<T> extends RecyclerView.Adapter<ViewHolder> { PRotected Context mContext; protected List<T> mDatas; protected ItemViewDelegateManager mItemViewDelegateManager; protected OnItemClickListener mOnItemClickListener; public MultiItemTypeAdapter(Context context, List<T> datas) { mContext = context; mDatas = datas; mItemViewDelegateManager = new ItemViewDelegateManager(); } @Override public int getItemViewType(int position) { if (!useItemViewDelegateManager()) return super.getItemViewType(position); return mItemViewDelegateManager.getItemViewType(mDatas.get(position), position); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ItemViewDelegate itemViewDelegate = mItemViewDelegateManager.getItemViewDelegate(viewType); int layoutId = itemViewDelegate.getItemViewLayoutId(); ViewHolder holder = ViewHolder.createViewHolder(mContext, parent, layoutId); onViewHolderCreated(holder,holder.getConvertView()); setListener(parent, holder, viewType); return holder; } public void onViewHolderCreated(ViewHolder holder,View itemView){ } public void convert(ViewHolder holder, T t) { mItemViewDelegateManager.convert(holder, t, holder.getAdapterPosition()); } protected boolean isEnabled(int viewType) { return true; } protected void setListener(final ViewGroup parent, final ViewHolder viewHolder, int viewType) { if (!isEnabled(viewType)) return; viewHolder.getConvertView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { int position = viewHolder.getAdapterPosition(); mOnItemClickListener.onItemClick(v, viewHolder , position); } } }); viewHolder.getConvertView().setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (mOnItemClickListener != null) { int position = viewHolder.getAdapterPosition(); return mOnItemClickListener.onItemLongClick(v, viewHolder, position); } return false; } }); } @Override public void onBindViewHolder(ViewHolder holder, int position) { convert(holder, mDatas.get(position)); } @Override public int getItemCount() { int itemCount = mDatas.size(); return itemCount; } public List<T> getDatas() { return mDatas; } public MultiItemTypeAdapter addItemViewDelegate(ItemViewDelegate<T> itemViewDelegate) { mItemViewDelegateManager.addDelegate(itemViewDelegate); return this; } public MultiItemTypeAdapter addItemViewDelegate(int viewType, ItemViewDelegate<T> itemViewDelegate) { mItemViewDelegateManager.addDelegate(viewType, itemViewDelegate); return this; } protected boolean useItemViewDelegateManager() { return mItemViewDelegateManager.getItemViewDelegateCount() > 0; } public interface OnItemClickListener { void onItemClick(View view, RecyclerView.ViewHolder holder, int position); boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.mOnItemClickListener = onItemClickListener; }}

======================================================================

public abstract class CommonAdapter<T> extends MultiItemTypeAdapter<T>{ protected Context mContext; protected int mLayoutId; protected List<T> mDatas; protected LayoutInflater mInflater; public CommonAdapter(final Context context, final int layoutId, List<T> datas) { super(context, datas); mContext = context; mInflater = LayoutInflater.from(context); mLayoutId = layoutId; mDatas = datas; addItemViewDelegate(new ItemViewDelegate<T>() { @Override public int getItemViewLayoutId() { return layoutId; } @Override public boolean isForViewType( T item, int position) { return true; } @Override public void convert(ViewHolder holder, T t, int position) { CommonAdapter.this.convert(holder, t, position); } }); } protected abstract void convert(ViewHolder holder, T t, int position);}

======================================================================

@Override protected void initView() { mAdapter = new CommonAdapter<MeetingVo>(mBaseContext, R.layout.item_meeting, mMeetingVos) { @Override protected void convert(ViewHolder holder, MeetingVo meetingVo, int position) { holder.setText(R.id.tv_name, meetingVo.getTheme()); holder.setText(R.id.tv_address, meetingVo.getAddress()); holder.setText(R.id.tv_time, DateUtil.transferLongToDate("yyyy-MM-dd HH:mm:ss", meetingVo.getTime())); if (position == getItemCount() - 1) { holder.setImageResource(R.id.iv_divider, R.drawable.divider_gray); } else { holder.setImageResource(R.id.iv_divider, R.drawable.divider_white_gray); } holder.getConvertView().setOnClickListener(v -> { Intent intent = new Intent(mContext, MeetingDetailActivity.class); intent.putExtra("meetingVo", meetingVo); intent.putExtra("source", mSource); mContext.startActivity(intent); }); } }; mRecyclerView.setLayoutManager(new LinearLayoutManager(mBaseContext)); mRecyclerView.setAdapter(mAdapter ); }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泽库县| 江西省| 丽水市| 遂昌县| 苍南县| 高尔夫| 越西县| 大庆市| 肇州县| 唐山市| 宁安市| 乌海市| 金寨县| 大石桥市| 南昌市| 根河市| 彭山县| 神农架林区| 民权县| 赤峰市| 偃师市| 永德县| 黄大仙区| 隆回县| 绵阳市| 黎平县| 巧家县| 黑水县| 阆中市| 海阳市| 公主岭市| 普兰店市| 安远县| 苍溪县| 中阳县| 驻马店市| 长乐市| 彭山县| 南宁市| 玉龙| 东台市|