RecyclerView -- 中阶

2024-03-29 00:58
文章标签 recyclerview 中阶

本文主要是介绍RecyclerView -- 中阶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BRVAH使用

多布局

  1. 实体类实现MultiItemEntity 接口,根据类型进行绑定;
  2. 为 BaseQuickAdapter 设置代理。

标题

SnapHelper
Support RecyclerView 24.2.0中新加,让RecyclerView滑动视图后使停止位置正好停在某页的正中间。

new LinearSnapHelper().attachToRecyclerView(recyclerView);

数据刷新
dataList.clear(); //去掉之前的数据。要在原数据对象基础上。
dataList.add(weather); //添加新的Weather对象
mAdapter.notifyDataSetChanged();

重点内容
刷新全部可见的item,notifyDataSetChanged()
刷新指定item,notifyItemChanged(int)
从指定位置开始刷新指定个item,notifyItemRangeChanged(int,int)
插入、移动一个并自动刷新,notifyItemInserted(int)、notifyItemMoved(int)、notifyItemRemoved(int)
局部刷新,notifyItemChanged(int, Object)

优化

使用合适的刷新方法

数据需要全局刷新时,可以使用notifyDataSetChanged;对于增加或减少数据,可以使用如下方法实现局部刷新。

notifyItemChanged(int position)
notifyItemInserted(int position)
notifyItemRemoved(int position)
notifyItemMoved(int fromPosition, int toPosition) 
notifyItemRangeChanged(int positionStart, int itemCount)
notifyItemRangeInserted(int positionStart, int itemCount) 
notifyItemRangeRemoved(int positionStart, int itemCount) 

嵌套时设置共享itemView对象池

class OuterAdapter extends RecyclerView.Adapter<OuterAdapter.ViewHolder> {RecyclerView.RecycledViewPool mSharedPool = new RecyclerView.RecycledViewPool();...@Overridepublic void onCreateViewHolder(ViewGroup parent, int viewType) {// inflate inner item, find innerRecyclerView by ID…LinearLayoutManager innerLLM = new LinearLayoutManager(parent.getContext(),LinearLayoutManager.HORIZONTAL);innerRv.setLayoutManager(innerLLM);innerRv.setRecycledViewPool(mSharedPool);return new OuterAdapter.ViewHolder(innerRv);}

嵌套时增加预加载

如果默认显示3个,设置LayoutManager.setInitialPrefetchItemCount(4),让默认加载4个,系统默认是2个。

减少view type的数量

创建不同的view type需要额外的inflate调用导致卡顿。尽量减少type数量。

onBindViewHolder(VH, int)不做耗时操作

在此方法中尽量只做读取数据,并设置ViewHolder。
不要做:逻辑判断;减少临时对象创建;

优化Item布局

减少布局嵌套。

使用单个监听器

全局new一个Listener,通过view.getId与view.getTag取到对应View的id和数据,避免对每个新创建的Viewholder都new出一个监听器。

值相同避免再次刷新

更新数据前,先判断是否相同?不相同再更新内容。

固定了Item的高度

避免每次绘制Item时,不再重新计算Item高度。

解析

比ListView优点

  1. RecyclerView比ListView多两级缓存,支持多个离ItemView缓存,支持开发者自定义缓存处理逻辑;
  2. 支持所有RecyclerView共用同一个RecyclerViewPool(缓存池)。
  3. RecyclerView缓存RecyclerView.ViewHolder,抽象可理解为:View + ViewHolder(避免每次createView时调用findViewById) + flag(标识状态);
  4. 通过局部刷新,就能避免调用许多无用的bindView.

标题

重点内容

  • 使用RecyclerView实现Gallery画廊效果
  • RecyclerView.Adapter notifyDataSetChanged 不起作用
  • RecyclerView 数据刷新的几种方式
  • RecyclerView刷新notifyDataSetChanged
  • RecyclerView遇到notifyDataSetChanged无效时的解决方案 4*
  • RecyclerView 使用ItemDecoration 巧妙实现吸附效果
  • Android ListView与RecyclerView对比浅析–缓存机制
  • 自定义View:实现RecyclerView的item添加悬浮层的效果
  • 手把手教你实现猫眼电影选择效果 滑动,选择都让某item居中
  • RecyclerView库中被我们忽略的部分
  • 图文搞懂RecyclerView 的各部分组成 | RecyclerView进阶
  • 一次失败的RecycleView滑动定位,SnapHelper 真香!
  • 看完这篇,面试 RecyclerView 的时候再也不怕了

这篇关于RecyclerView -- 中阶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857185

相关文章

RecyclerView的itemView的点击效果

1,需要在 itemView 的布局 根节点上添加  android:clickable="true" 2、或者通过代码实现 @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {  ((ViewHolder)viewHolder).textView

NLP从零开始------文本中阶处理之序列到序列模型(完整版)

1. 序列到序列模型简介         序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列,输出序列称作目标序列。序列到序列有非常多的重要应用, 其中最有名的是机器翻译( machine translation), 机器翻译模型的输入是待翻译语言(源语言) 的文本,输出则是翻译后的语言(目标语言)

ScrollView嵌套RecyclerView再嵌套RecyclerView导致的布局展示不完整问题

背景:页面布局,最外层有个ScrollView,然后里面有个RecyclerView,然后每个RecyclerView的item都是一个RecyclerView 异常:页面展示不完整,最底下的Item 展示一半,在往上滑就滑不动了   解决: // 每一个item渲染完后重新计算外层recyclerview高度// 因为外层的recyclerview是先渲染的,渲染时 内部recyc

【项目FJU】使用SwipeRefreshLayout+RecyclerView制作下拉刷新上拉加载更多

效果截图 https://github.com/ydslib/Jianshu/tree/develop 需要用到的知识 setColorSchemeResources:设置下拉刷新进度条的颜色setOnRefreshListener:设置下拉刷新监听android:overScrollMode:设置滑动到边缘时无效果模式ContentLoadingProgressBar:内容加载进度条,继承

安全技术学习路线图 初阶+中阶+高阶

一、报告名称     安全技术学习路线图 二、作者     奇安信安全开发专家组:韩鹏 | 李常坤 | 汪列军 | 刘洪亮 | 张钊 | 陈大钊 | 叶盛 | 章磊 | 白子潘 | 覃永靖 三、若需要pdf版本     关注"元宇宙最新报告",回复关键词“安全技术学习路线图”,获取网盘免费下载链接。 如 源自CSDN 往期文章:

Web前端技术学习路线图 初阶+中阶+高阶

一、报告名称     前端技术学习路线图 二、作者          阿里前端委员会:孟令君 | 舒文亮 | 许智燕 | 赵兴越 | 王忆天 | 吴天豪 | 潘佳 | 包续兵 | 张伟 | 王卓 | 金擘 | 周祺 | 张舒迪 | 林峰 | 廖晓娟 | 曹桂荣 | 曹元彦 | 荣先乾 | 田国法 | 林友赛 | 甄焱鲲 | 桑世龙 | 邱煜 | 王光 | 吴成忠 | 姜博玮 | 蒲松洋

ListView和RecyclerView比较

1.ViewHolder 作用: View复用 Listview: 自己定义 RecyclerView: RecyclerView.ViewHolder则变成了必须 2.LayoutManager 作用: 布局管理器 Listview: 官方推荐只做垂直滚动功能 RecyclerView: LinearLayoutManager,可以支持水平和竖直方向上滚动的列表。 S

NLP从零开始------16.文本中阶处理之序列到序列模型(1)

1. 序列到序列模型简介         序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列,输出序列称作目标序列。序列到序列有非常多的重要应用, 其中最有名的是机器翻译( machine translation), 机器翻译模型的输入是待翻译语言(源语言) 的文本,输出则是翻译后的语言(目标语言)

RecyclerView和CardView的使用以及注意

转载请注明出处 作者:AboutJoke ( http://blog.csdn.net/u013200308 ) 原文链接:http://blog.csdn.net/u013200308/article/details/51244289 距离RecyclerView和CardView的出现已经很久了,网上也有很多关于这方面的博客。因为最近自己在项目中用到了Material Design设计规

解决ScrollView 嵌套RecyclerView出现的问题

ScrollView 嵌套RecyclerView会使RecyclerView列表显示不全,很多人都把ScrollView替换成NestedScrollView,或者重写RecyclerView。 其实使用ScrollView并且不用重写RecyclerView也是可以实现的,那就是在RecyclerView外面再嵌套一层布局就可以了。像下面这样: <ScrollViewand