首页 > 其他 > 详细

RecycleView的多布局

时间:2017-08-21 12:24:12      阅读:316      评论:0      收藏:0      [点我收藏+]

---恢复内容开始---

1.首先在适配器定义一个枚举

public enum ITEM_TYPE {
ITEM1,
ITEM2
}

2.然后在 OnCreatedViewHoler中这样写

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ITEM_TYPE.ITEM1.ordinal()) {
return new Item1ViewHolder(mLayoutInflater.inflate(R.layout.item1, parent, false));
} else {
return new Item2ViewHolder(mLayoutInflater.inflate(R.layout.item2, parent, false));
}
}
3。在OnBind方法中 这样写:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof Item1ViewHolder) {
Glide.with(context).load(list.get(position).getThumbnail_pic_s()).into(((Item1ViewHolder) holder).image);
((Item1ViewHolder) holder).text.setText(list.get(position).getTitle());
} else if (holder instanceof Item2ViewHolder) {
Glide.with(context).load(list.get(position).getThumbnail_pic_s()).into(((Item2ViewHolder) holder).image1);
Glide.with(context).load(list.get(position).getThumbnail_pic_s02()).into(((Item2ViewHolder) holder).image2);
Glide.with(context).load(list.get(position).getThumbnail_pic_s03()).into(((Item2ViewHolder) holder).image3);
((Item2ViewHolder) holder).name.setText(list.get(position).getTitle());

}
}

4.在getItemCout中这样写
@Override
public int getItemCount() {
return list == null ? 0 :list.size();
}

5.在getitemType中这样写
return position % 2 == 0 ? ITEM_TYPE.ITEM1.ordinal() : ITEM_TYPE.ITEM2.ordinal();
6.然后下面这样写
//item2的viewholder
public static class Item2ViewHolder extends RecyclerView.ViewHolder {
private final TextView name;
private final ImageView image1;
private final ImageView image2;
private final ImageView image3;
public Item2ViewHolder(View itemView) {
super(itemView);
name= (TextView) itemView.findViewById(R.id.name);
image1 = (ImageView) itemView.findViewById(R.id.caritem_image1);
image2 = (ImageView) itemView.findViewById(R.id.caritem_image2);
image3 = (ImageView) itemView.findViewById(R.id.caritem_image3);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listeners.onclick(getAdapterPosition());
}
});
}
}

//item1 的ViewHolder
public static class Item1ViewHolder extends RecyclerView.ViewHolder {
TextView text;
private final ImageView image;

public Item1ViewHolder(View itemView) {
super(itemView);
text = (TextView) itemView.findViewById(R.id.text);
image = (ImageView) itemView.findViewById(R.id.image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listeners.onclick(getAdapterPosition());
}
});
}
}
//接口回调 ,用于监听条目
interface Listener{
void onclick(int position);

}
 




 

---恢复内容结束---

RecycleView的多布局

原文:http://www.cnblogs.com/xlgwzh/p/xun_recyclevuew.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!