总结一个recyclerview使用模版
来源:互联网 发布:java page cache 编辑:程序博客网 时间:2024/05/24 07:32
1.recyclerview调用
rvRecommend = (RecyclerView) findViewById(R.id.activity_academy_video_rv_recommend);rvRecommend.setLayoutManager(new LinearLayoutManager(this));//纵向//rvPhoto.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));横向//rvAnswerSheet.setLayoutManager(new GridLayoutManager(this, 5));宫格 //academyVideoDetailAdapter.setOnRecommendItemClickListener(this);点击事件rvRecommend.setAdapter(academyVideoDetailAdapter);
2.多种类型item的adapter
/** * 学院视频详情页dadapter * 作者: FebMaple on 11/5/2017. * 邮箱: febmaple219@gmail.com * 版权: FebMaple * ==================================================== */public class AcademyVideoDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context mContext; private LayoutInflater mLayoutInflater; private static final int ACADEMY_VIDEO_TYPE = 0; private static final int SCHOOL_VIDEO_TYPE = 1; private List<T> mVideoList; private static OnRecommendItemClickListener itemClickListener;//点击事件监听器 public AcademyVideoDetailAdapter(Context context, ArrayList<VideoRecommendEntity> videoList) { mContext = context; mVideoList = videoList; mLayoutInflater = LayoutInflater.from(context); } //更新adapter public void updataAdapter(List<VideoRecommendEntity> newList) { mVideoList = newList; notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ACADEMY_VIDEO_TYPE) { return new AcademyViewHolder(mLayoutInflater.inflate(R.layout.item_academy_video_detail_activity_academy_rv, parent, false)); } else { return new SchoolViewHolder(mLayoutInflater.inflate(R.layout.item_academy_video_detail_activity_school_rv, parent, false)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof AcademyViewHolder) { ((AcademyViewHolder) holder).bindData(mVideoList, position); } else if (holder instanceof SchoolViewHolder) { ((SchoolViewHolder) holder).bindData(mVideoList, position); } } @Override public int getItemCount() { return mVideoList == null ? 0 : mVideoList.size(); } @Override public int getItemViewType(int position) { if (mVideoList.get(position).getVideoType() == 3) { return SCHOOL_VIDEO_TYPE;//学校视频 } else { return ACADEMY_VIDEO_TYPE;//学院视频和宣传视频 } } /** * 学院holder */ public static class AcademyViewHolder extends RecyclerView.ViewHolder { private TextView tvTitleRecommendItem; public AcademyViewHolder(View itemView) { super(itemView); initView(itemView); } private void initView(View itemView) { tvTitleRecommendItem = (TextView) itemView.findViewById(R.id.tv_title_academy_video_item); } public void bindData(final List<T> mVideoList, final int position) { tvTitleRecommendItem.setText(mVideoList.get(position).getName());//点击事件llPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onRecommendItemClick(position, mVideoList); } } }); } } /** * 学校holder */ public static class SchoolViewHolder extends RecyclerView.ViewHolder { private TextView tvSchoolNameRecommendItem; public SchoolViewHolder(View itemView) { super(itemView); initView(itemView); } private void initView(View itemView) { tvSchoolNameRecommendItem = (TextView) itemView.findViewById(R.id.tv_name_school_video_item); } public void bindData(final List<T> mVideoList, final int position) { tvSchoolNameRecommendItem.setText(mVideoList.get(position).getName()); llPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onRecommendItemClick(position, mVideoList); } } }); } } public interface OnRecommendItemClickListener { void onRecommendItemClick(int position, List<T> aList); } public void setOnRecommendItemClickListener(OnRecommendItemClickListener listener) { itemClickListener = listener; }}
attention:
/** * 推荐列表item点击事件 * * @param position * @param aList */ @Override public void onRecommendItemClick(int position, List<VideoRecommendEntity> aList) { if (aList.get(position).getVideoType() == 3) {//学校 } else {//学院 } }
2.single item的adapter
/** * 作者: FebMaple on 15/5/2017. * 邮箱: febmaple219@gmail.com * 版权: FebMaple * ==================================================== */public class SchoolVideoPhotoAdapter extends RecyclerView.Adapter<SchoolVideoPhotoAdapter.MyViewHolder> { private Context mContext; private LayoutInflater mLayoutInflater; private List<T> mPhotoList; private static onItemClickListener itemClickListener; public SchoolVideoPhotoAdapter(Context context, List<String> photoList) { mContext = context; mPhotoList = photoList; mLayoutInflater = LayoutInflater.from(context); } public void updateAdapter(ArrayList<String> newList) { mPhotoList = newList; notifyDataSetChanged(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyViewHolder(mLayoutInflater.inflate(R.layout.item_school_video_detail_activity_rv_photo, parent, false)); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.bindData(mPhotoList, position); } @Override public int getItemCount() { return mPhotoList == null ? 0 : mPhotoList.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { private SimpleDraweeView ivPhoto; public MyViewHolder(View itemView) { super(itemView); initView(itemView); } private void initView(View itemView) { ivPhoto = (SimpleDraweeView) itemView.findViewById(R.id.iv_photo_banner_school_video_item); } public void bindData(final List<T> aList, final int position) { ivPhoto.setImageURI(Uri.parse(aList.get(position))); ivPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) {itemClickListener.onItemClick(position, aList); } } }); } } public interface onItemClickListener {void onItemClick(int position, List<String> aList); } public void setOnItemClickListener(onItemClickListener listener) { itemClickListener = listener; }}
阅读全文
1 0
- 总结一个recyclerview使用模版
- RecyclerView.ItemDecoration 使用总结
- RecyclerView使用总结
- RecyclerView使用总结
- RecyclerView简单使用总结
- Dokuwiki模版Vector使用总结
- Aspose Word模版使用总结
- RecyclerView适配器模版
- RecyclerView多条目模版
- Android的RecyclerView使用总结
- (一)RecyclerView简单使用总结
- Aspose Word模版使用总结篇(2)
- iReport使用教程[转]+总结+模版
- RecyclerView瀑布流布局模版
- 模版总结
- RecyclerView初使用遇到的一个问题
- 关于Recyclerview使用时的一个错误
- Android之RecyclerView的使用总结
- 蛋蛋的问题(一)
- tensorflow concat
- 面试题56. 链表中环的入口结点
- 理解java字节码
- LeetCode 455. Assign Cookies
- 总结一个recyclerview使用模版
- 《Python数据分析与挖掘实战》笔记(三):数据探索
- 【BZOJ1833】【数位DP】 count 数字计数
- 两数组的交 II
- MySQL命令show full processlist
- 线程的调度&&线程的生命周期&&Daemon线程
- memset与memcpy的用法
- Maven从下载到eclipse建立项目
- JAVA---猜字游戏