RecycleView的多布局

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

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

public enum ITEM_TYPE {    ITEM1,    ITEM2}

2.然后在 OnCreatedViewHoler中这样写

@Overridepublic 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方法中 这样写:
@Overridepublic 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中这样写
@Overridepublic 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 的ViewHolderpublic 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);

}
 




 

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

时间: 2024-10-25 04:55:57

RecycleView的多布局的相关文章

手把手教你给RecycleView添加头布局和尾布局

RecycleView想必大家都不陌生,它已他的高拓展性取代了传统布局显示,同时配合协调布局,可以实现很多意想不到的酷炫交互,今天就和大家介绍一下,如何给RecycleView添加头布局和尾布局,同时你也可以通过自己的拓展实现更多复杂的布局. 首先我们先看一下效果: 实现头部尾部布局其实方法还是很多,这里我推荐使用Adapter设置itemType来做,那么问题来了,为什么这么做呢?因为拓展性更强,并且更加解耦.将逻辑都写在adapter中,比起写在activity中管理起来也更加方便. 首先,

Recycleview实现复杂布局

Recycleview实现复杂布局 首先 附上Demo链接和效果供大家参考 Demo 实现思路 代码思考 时间是一切财富中最宝贵的财富. -- 德奥弗拉斯多 <a 实现思路 开始看到设计稿子的时候,就在考虑这种参差不齐的布局.是不是有得考虑对数据的重新组装和计算每个空白区域的位置等等,因为之前做过类似的补空白的item.但感觉这个要是算起来会更加复杂 就在考虑有没有比较简单的实现思路 首先我想到了用嵌套的方式去实现,但是那样的话,性能会受到很大的影响.因为UI上滑动的卡顿,是我们最不想见到的情况

RecycleView 实现多布局

最近的一个新需求,简单描述下吧: 需求: 目标样式如图所示,我们需要根据需求动态添加网关和设备. 目标有了下面就是怎么实现了.首先我们选用的是RecycleView 那么主要目标就成了 在recycleView下如何实现多布局(我们看到网关和设备的布局不同) 首先写两个布局(一个网关 , 一个设备) 网关布局样式: 设备布局样式: 这些都比较简单,在这里就不赘述. RecycleView的基本用法: 1)引入包 2)在布局中使用控件 3)在activity中绑定并使用recycleView 4)

Android Studio第二十七期 - RecycleView不同item布局

其实就是适配器的写法~ (附:copy loader的~剪刀手~) DemoDifferentRecycleViewAdapter: package com.haiersmart.sfnation.demo.adapter; import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.support.v7

HeaderRecycleAdapter--通用的带头部RecycleView.Adapter

目录 概述 HeaderRecycleViewAdapter这是一个通用的RecycleView.Adapter,可以不需要继承即可简单的使用.此Adapter实现了带头部的处理显示,不需要使用头部显示时可以使用其简单版本SimpleRecycleViewAdapter. 适用范围 任何类型的数据 支持LinearLayoutManager及GridLayoutManager 支持竖直方向及横向方向 暂时不支持reverseLayout,即反方向布局 其它 对于文中提到一些不太能马上理解的点,后

Android开发RecycleView的使用全解

RecycleView 简介: RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recylerview即回收view也可以看出. 优点及作用: 根据官方的介绍RecylerView是ListView的升级版,既然如此那RecylerView必然有它的优点,现就RecylerView相对于ListView的优点罗列如下: RecylerView封装了viewholder的回收复用,也就是说

RecycleView设置顶部分割线(记录一个坑)

大家都知道,想给RecycleView设置分割线可以重写RecyclerView.ItemDecoration 项目过程中,遇到一个需求:RecycleView顶部有一条灰色的间隔,我想到了给RecycleView设置分割线的方法,当然只给第一个Item设置,而且在上方. public class MyDividerItemDecoration extends RecyclerView.ItemDecoration { private Drawable mDivider; /** * Custo

【翻译】Android RecyclerView CardView

Android L最新支持包推出两个UI控件RecycleView和CardView.RecyclerView是更先进,更灵活的ListView,这是一个很大的进步,因为ListView是UI组件中最常用的控件之一.此外,CardView控件是一个全新的组件.在这篇教程中将解释如何使用这两个控件以及如何混合使用它们,首先来来深入了解一下RecyclerView. RecyclerView 正如前面说RecyclerView是更加灵活的ListView,尽管它引进了一些复杂的东西.我们都知道如何在

拆解轮子之XRecyclerView

简介 这个轮子是对RecyclerView的封装,主要完成了下拉刷新.上拉加载更多.RecyclerView头部.在我的Material Design学习项目中使用到了项目地址,感觉还不错.趁着毕业答辩还有2个星期,先把这个轮子拆了看看,这个项目地址在XRecyclerView,先贴个效果图,更多效果图请进入项目中查看. 使用 使用起来也比较简单,首先向普通RecyclerView那样: LinearLayoutManager layoutManager = new LinearLayoutMa