总结一个recyclerview使用模版
2017-06-05 19:13
274 查看
1.recyclerview调用
2.多种类型item的adapter
attention:
2.single item的adapter
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); //记得new一个adapter
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; } }
相关文章推荐
- 总结一个recyclerview使用模版
- RecyclerView使用总结
- RecyclerView的进阶使用,一个LayoutManger下添加多种布局
- RecyclerView+CardView使用总结(带小例子)
- 使用RecyclerView实现QQ空间广告位一个位置两个图时偶遇bug
- BaseRecyclerViewAdapterHelper使用总结
- RecyclerView 使用方法总结(一):RecyclerView的基本用法,及实现ListView
- 关于Recyclerview使用时的一个错误java.lang.NoSuchMethodError: No static method getMatrix(Landroid/view/View;)
- RecyclerView简单使用总结
- Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
- Android基础总结十二:RecyclerView简单使用
- RecyclerView 使用总结(三):点击事件、GridView等、瀑布流、动态增删
- Android之RecyclerView的使用总结
- [AS2.1.3]RecyclerView的使用总结
- RecyclerView初使用遇到的一个问题
- Android5.x 新控件之RecyclerView使用总结
- 关于Recyclerview使用时的一个错误
- Android的RecyclerView使用总结
- RecyclerView使用中同一个Item总是有两个viewholder对象
- 一个使用RecyclerView写的树结构效果:TreeRecyclerView