总结一个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;    }}