您的位置:首页 > 其它

总结一个recyclerview使用模版

2017-06-05 19:13 274 查看
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);
//记得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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: