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

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

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

2019-11-09 15:34:29
字體:
來源:轉載
供稿:網友
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 ); }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 子长县| 黔江区| 南开区| 千阳县| 平山县| 图片| 浙江省| 峨山| 阳泉市| 寿宁县| 安仁县| 桂东县| 临沭县| 南昌县| 象山县| 青川县| 荔浦县| 天长市| 平凉市| 封开县| 溧水县| 德江县| 泊头市| 大竹县| 资讯 | 察隅县| 界首市| 峡江县| 那坡县| 孟州市| 和田市| 侯马市| 香河县| 石林| 隆回县| 南溪县| 大姚县| 霍林郭勒市| 昔阳县| 镶黄旗| 屏南县|