Android recyclerView 多布局
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 多布局相关推荐
- Android RecyclerView网格布局动画
In this tutorial, we'll learn how to create animation for a RecyclerView in which elements are displ ...
- android 分割线布局,Android RecyclerView网格布局(支持多种分割线)详解(2)
记录了下RecyclerView的使用方法,并且讲述了线性布局列表的使用方法,在此基础上加上了万能分割线,支持颜色分割线和图片分割线,同时支持对分割线设置线宽. 这篇是总结一下网格布局的使用,同样也支 ...
- Android RecyclerView复杂布局 实现多Item,item中含视频文件播放
效果(随手画的啊,哈哈哈) 主要就是Adapter里面的内容 import android.content.Context; import android.content.SharedPreferen ...
- android recyclerview多布局_图文讲解RecyclerView的复用机制 ||Recyclerview进阶
码个蛋(codeegg) 第 1085 次推 作者:susion 博客地址:https://juejin.im/post/5c1369cff265da613b6fa87f 本文是RecyclerVie ...
- android RecyclerView 九宫格布局上下均分
今天有人问到这方面问题,趁着礼拜天 分享给大家 ,直接上代码 首先先将下面的复制的你的代码中 public class ItemOffsetDecoration extends RecyclerVie ...
- Android RecyclerView加载复杂布局
Android RecyclerView加载复杂布局 用一个RecyclerView实现多种复杂布局,复用机制要保存 简书:Android RecyclerView加载复杂布局 demo源码挂载在码云 ...
- Android RecyclerView布局动画
In this tutorial, we'll be discussing and implementing RecyclerView Layout Animations in our Android ...
- android开发 RecyclerView 列表布局
android开发 RecyclerView 列表布局 前言 这是一个我早期学习的RecyclerView的博客,最近想整理一下它.后续会一点一点的再次添加内容. 导入 虽然RecyclerView是 ...
- Android RecyclerView 基本使用
Android RecyclerView 基本使用 概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用. 据官方的介绍,该控件用 ...
最新文章
- 构造 ---- 最小没出现过的数(逆向构造) D. Replace by MEX
- 算法-二叉树中的最大路径和
- @Resource注解研究和在SAP Hybris ECP中的应用
- 精品软件 推荐 360 安全卫士
- JAXB和java.util.Map
- 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732E电磁流量计对环境和温度的限制
- 网页图表控件Highcharts如何详细设置参数
- C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
- 责任分配矩阵和raci的区别_有限责任公司实现盈利,当年就一定可以分红吗?...
- Codeforces #123D: 后缀数组+单调栈
- Linux:configure: error: OpenSSL libcrypto not found
- 20个免费和高质量的Android图标集—最佳
- 国家计算机二级在线报名,23 日起,全国计算机等级考试开始网上报名
- java map替换_在java的Map集合中,怎样更改value的值
- 安全狗技术分享|Web应用防火墙之攻击防护
- 如何判断一个网站是WordPress搭建的网站以及网站SEO网络推广
- 30个题型+代码(冲刺2023蓝桥杯)(上)
- 一、ICESat-2数据查询,下载,与处理
- xbox控制台小帮手怎么卸载?
- 获取Android 设备的WIFI IPv4地址
热门文章
- 谈一谈App的架构设计
- 值得学习的Linux内核锁(一)
- 苹果电脑自动更新怎么关闭 苹果系统关闭自动更新
- wecenter 第三方微博登录:你所访问的站点在微博认证失败
- excel支持2013版本和2017版本
- Git 安装教程(Windows)
- 献给母亲节的歌 - 江蕙 -《落雨声》,方文山词,周杰伦曲
- 成都产科生产日记(十六)(建档、入院生产、上户、少儿互助金、疫苗、儿保)全...
- java tomcat jvm内存_Tomcat修改JVM内存,修改了就是不生效,
- 荣耀30lite支持鸿蒙,曝荣耀30 Lite也要来了:美人尖+高刷新率+48MP三摄