内容简介:让一个RecyclerView中的一个Item有两种不同的布局,可以用来给Item赋予多个状态,当然也可以实现类似Expandable RecyclerView的效果。诀窍在于用实现一个Expandable RecyclerView来举例子:
让一个RecyclerView中的一个Item有两种不同的布局,可以用来给Item赋予多个状态,当然也可以实现类似Expandable RecyclerView的效果。
诀窍在于 notifyItemChanged
的时候,如果 getItemViewType
返回了不同的值, onCreateViewHolder
就会被再次调用,这时新建一个新的ViewHolder就可以啦。
用实现一个Expandable RecyclerView来举例子:
-
首先要使用不同的ViewType:
@Override public int getItemViewType() { return isExpanded() ? ExpandedAlarmViewHolder.VIEW_TYPE : CollapsedAlarmViewHolder.VIEW_TYPE; } -
要让第一种ViewHolder变成第二种,要在点击了第一种ViewHolder中的一个Button或其他,触发展开事件:
public void expand() { if (!isExpanded()) { mExpanded = true; notifyItemChanged(); } } -
在
onCreateViewHolder中根据不同的ViewType创建不同的ViewHolder@Override public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final ItemViewHolder.Factory factory = mFactoriesByViewType.get(viewType); if (factory != null) { return factory.createViewHolder(parent, viewType); } throw new IllegalArgumentException("Unsupported view type: " + viewType); }这里也可以不用factory,直接判断
viewType。 -
TaDa,完成。其实这篇文章最重要的就是第二句话。
来源:AOSP的DeskClock
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Android 横竖屏切换,约束布局动态修改约束
- Pear Admin Ant 1.1.0.Release 正式发布,新增布局切换、主题切换、工作空间
- Egret场景切换管理类切换和单例使用方法
- Spring项目中使用两种方法动态切换数据源,多数据源切换
- MySQL -- 主从切换
- Android自动切换夜间主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python神经网络编程
[英]塔里克·拉希德(Tariq Rashid) / 林赐 / 人民邮电出版社 / 2018-4 / 69.00元
神经网络是一种模拟人脑的神经网络,以期能够实现类人工智能的机器学习 技术。 本书揭示神经网络背后的概念,并介绍如何通过Python实现神经网络。全书 分为3章和两个附录。第1章介绍了神经网络中所用到的数学思想。第2章介绍使 用Python实现神经网络,识别手写数字,并测试神经网络的性能。第3章带领读 者进一步了解简单的神经网络,观察已受训练的神经网络内部,尝试进一步改......一起来看看 《Python神经网络编程》 这本书的介绍吧!
html转js在线工具
html转js在线工具
RGB CMYK 转换工具
RGB CMYK 互转工具