1.首先引入我们的RecyclerView的包

2.在布局文件中使用他

<android.support.v7.widget.RecyclerView  android:id="@+id/myRecycler"  android:layout_width="match_parent"  android:layout_height="match_parent"/>  

设置他的多布局样式
item_a.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical" android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="#65edfc"  android:layout_margin="5dp">  <TextView  android:id="@+id/item_a_text1"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:gravity="center"  android:textSize="30sp"/>  <TextView  android:id="@+id/item_a_text2"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:gravity="center"  android:background="#f5e593"  android:textSize="30sp"/>
</LinearLayout>  

item_b.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="horizontal" android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="#b0ed65"  android:layout_margin="5dp">  <ImageView  android:id="@+id/item_b_image"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@mipmap/image"/>  <LinearLayout  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical">  <TextView  android:id="@+id/item_b_text1"  android:layout_width="match_parent"  android:layout_height="0dp"  android:layout_weight="1"  android:gravity="center"  android:textSize="30sp"/>  <TextView  android:id="@+id/item_b_text2"  android:layout_width="match_parent"  android:layout_height="0dp"  android:layout_weight="1"  android:gravity="center"  android:textSize="30sp"/>  </LinearLayout>  </LinearLayout>  

a.新建一个接口,我们的Bean类会实现他的一个返回条目类别的接口

public interface TypeInterf {  public int getType();
}  

b.新建两个子类来实现我们的接口,这里我就以一个为例子了

public class Item_a implements TypeInterf {  String text1;  String text2;  public String getText1() {  return text1;  }  public void setText1(String text1) {  this.text1 = text1;  }  public String getText2() {  return text2;  }  public void setText2(String text2) {  this.text2 = text2;  }  @Override  public int getType() {  return R.layout.item_a;  }
}  

可以看到我们的返回类型是他的布局文件,这样做会在他返回的时候逻辑比较清楚

c.将这两个子类的多个对象放入数据源中就好

(4)接收Context和数据源,其中数据源的泛型要是你的接口

private Context context;  private List<TypeInterf> list;  public MyRecyclerAdapter(Context context, List<TypeInterf> list) {  this.context = context;  this.list = list;  }  

(5)重写getItemViewType方法

@Override
public int getItemViewType(int position) {  return list.get(position).getType();
}  

这个方法的值会在onCreateViewHoldere中的到,然后我们根据不同的type来创建不同的ViewHolder

(6)根据不同的type实现不同的ViewHolder

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  RecyclerView.ViewHolder holder = null;  View view = LayoutInflater.from(context).inflate(viewType, parent, false);  if(viewType==R.layout.item_a){  holder = new ViewHolder_a(view);  }else{  holder = new ViewHolder_b(view);  }  return holder;
}  

(7)绑定数据

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  if(holder instanceof ViewHolder_a){  ((ViewHolder_a) holder).textView1.setText(((Item_a)list.get(position)).getText1());  ((ViewHolder_a) holder).textView2.setText(((Item_a)list.get(position)).getText2());  }else{  ((ViewHolder_b) holder).textView1.setText(((Item_b)list.get(position)).getText1());  ((ViewHolder_b) holder).textView2.setText(((Item_b)list.get(position)).getText2());  }
}

(8)设置我们的数据源

private void initData() {  list = new ArrayList<>();  Item_a item_a = null;  Item_b item_b = null;  for (int i = 0; i < 100; i++) {  if (i%3==0) {  item_a = new Item_a();  item_a.setText1("ItemA的第"+i+"个text1");  item_a.setText2("ItemA的第"+i+"个text2");  list.add(item_a);  }else{  item_b = new Item_b();  item_b.setText1("ItemB的第"+i+"个text1");  item_b.setText2("ItemB的第"+i+"个text2");  list.add(item_b);  }  }
}  

Android recyclerView 多布局相关推荐

  1. Android RecyclerView网格布局动画

    In this tutorial, we'll learn how to create animation for a RecyclerView in which elements are displ ...

  2. android 分割线布局,Android RecyclerView网格布局(支持多种分割线)详解(2)

    记录了下RecyclerView的使用方法,并且讲述了线性布局列表的使用方法,在此基础上加上了万能分割线,支持颜色分割线和图片分割线,同时支持对分割线设置线宽. 这篇是总结一下网格布局的使用,同样也支 ...

  3. Android RecyclerView复杂布局 实现多Item,item中含视频文件播放

    效果(随手画的啊,哈哈哈) 主要就是Adapter里面的内容 import android.content.Context; import android.content.SharedPreferen ...

  4. android recyclerview多布局_图文讲解RecyclerView的复用机制 ||Recyclerview进阶

    码个蛋(codeegg) 第 1085 次推 作者:susion 博客地址:https://juejin.im/post/5c1369cff265da613b6fa87f 本文是RecyclerVie ...

  5. android RecyclerView 九宫格布局上下均分

    今天有人问到这方面问题,趁着礼拜天 分享给大家 ,直接上代码 首先先将下面的复制的你的代码中 public class ItemOffsetDecoration extends RecyclerVie ...

  6. Android RecyclerView加载复杂布局

    Android RecyclerView加载复杂布局 用一个RecyclerView实现多种复杂布局,复用机制要保存 简书:Android RecyclerView加载复杂布局 demo源码挂载在码云 ...

  7. Android RecyclerView布局动画

    In this tutorial, we'll be discussing and implementing RecyclerView Layout Animations in our Android ...

  8. android开发 RecyclerView 列表布局

    android开发 RecyclerView 列表布局 前言 这是一个我早期学习的RecyclerView的博客,最近想整理一下它.后续会一点一点的再次添加内容. 导入 虽然RecyclerView是 ...

  9. Android RecyclerView 基本使用

    Android RecyclerView 基本使用 概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用. 据官方的介绍,该控件用 ...

最新文章

  1. 构造 ---- 最小没出现过的数(逆向构造) D. Replace by MEX
  2. 算法-二叉树中的最大路径和
  3. @Resource注解研究和在SAP Hybris ECP中的应用
  4. 精品软件 推荐 360 安全卫士
  5. JAXB和java.util.Map
  6. 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732E电磁流量计对环境和温度的限制
  7. 网页图表控件Highcharts如何详细设置参数
  8. C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
  9. 责任分配矩阵和raci的区别_有限责任公司实现盈利,当年就一定可以分红吗?...
  10. Codeforces #123D: 后缀数组+单调栈
  11. Linux:configure: error: OpenSSL libcrypto not found
  12. 20个免费和高质量的Android图标集—最佳
  13. 国家计算机二级在线报名,23 日起,全国计算机等级考试开始网上报名
  14. java map替换_在java的Map集合中,怎样更改value的值
  15. 安全狗技术分享|Web应用防火墙之攻击防护
  16. 如何判断一个网站是WordPress搭建的网站以及网站SEO网络推广
  17. 30个题型+代码(冲刺2023蓝桥杯)(上)
  18. 一、ICESat-2数据查询,下载,与处理
  19. xbox控制台小帮手怎么卸载?
  20. 获取Android 设备的WIFI IPv4地址

热门文章

  1. 谈一谈App的架构设计
  2. 值得学习的Linux内核锁(一)
  3. 苹果电脑自动更新怎么关闭 苹果系统关闭自动更新
  4. wecenter 第三方微博登录:你所访问的站点在微博认证失败
  5. excel支持2013版本和2017版本
  6. Git 安装教程(Windows)
  7. 献给母亲节的歌 - 江蕙 -《落雨声》,方文山词,周杰伦曲
  8. 成都产科生产日记(十六)(建档、入院生产、上户、少儿互助金、疫苗、儿保)全...
  9. java tomcat jvm内存_Tomcat修改JVM内存,修改了就是不生效,
  10. 荣耀30lite支持鸿蒙,曝荣耀30 Lite也要来了:美人尖+高刷新率+48MP三摄