RecyclerView优化实战指南_android 优化oncreateviewholder(2)

   日期:2024-12-26    作者:szklm01 移动:http://oml01z.riyuangf.com/mobile/quote/41031.html

}
}
} else {
holder.imageView.setImageBitmap(null)
}
// …
}
}

object ImageLoader {
// …
fun fetchBitmapFromURL(url: String): Bitmap? {
// …
return bitmap
}
}

4. 合理使用布局管理器

RecyclerView 提供多种布局管理器,每种管理器都适用于不同的场景。我们应该根据具体需求选择适合的管理器。以下是布局管理器的示例

代码演示

val layoutManager = when (layoutType) {
LayoutType.LINEAR -> LinearLayoutManager(context)
LayoutType.GRID -> GridLayoutManager(context, spanCount)
LayoutType.STAGGERED_GRID -> StaggeredGridLayoutManager(spanCount, orientation)
}
recyclerView.layoutManager = layoutManager

5. 使用数据绑定

数据绑定是一种将数据直接绑定到视图上的技术,减少代码量,提高代码可读性。我们可以在 adapter_layout.xml 中使用 标签,将数据绑定到视图的布局文件中,从而减少代码量。

代码演示

在 Adapter 中使用 DataBindingUtil.inflate 方法,将 layout 绑定到 Data 中并设置到 ViewHolder 上。
代码演示

class MyAdapter : RecyclerView.Adapter() {
// …
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val binding = ItemLayoutBinding.inflate(
LayoutInflater.from(parent.context), parent, false)
return MyViewHolder(binding.root)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.binding.data = dataSet[position]
// …
}
// …
}

6. 减少布局中嵌套层级

布局中的嵌套层级越多,性能就越低,所以需要尽可能减少嵌套层级。可以使用 ConstraintLayout 或者扁平布局来减少嵌套层级。

7. 设置 Recyclerview 的固定大小

在 Recyclerview 的布局中,设置 android:layout_height 和 android:layout_width 的值为具体数值,可以避免列表项的宽高随着内容的变化而变化,从而使布局横向和纵向的测量也相应变快。

8. 禁止自动滑动

当数据项发生变化,RecyclerView 默认会自动滚动到新位置。如果这种行为不是必需的,可以在 Adapter 中重写 onItemRangeChanged 方法,并在其中禁止滑动。

代码演示

override fun onItemRangeChanged(positionStart: Int, itemCount: Int) {
if (itemCount == 1) {
notifyItemChanged(positionStart)
} else {
notifyDataSetChanged()
}
recyclerView.stopScroll()
}

9. 使用预加载

使用预加载技术可以使 RecyclerView 在滑动过程中提前加载更多数据,保证滑动的流畅性和用户体验。
这些技巧可以根据具体的应用情况来使用,针对不同的问题提供不同的解决方案,从而提升 RecyclerView 的性能。如果需要更高级的功能,可以考虑使用 RecyclerView 提供的其它高级接口。

结论

通过本文,我们介绍了一些优化 RecyclerView 的技巧,包括使用 DiffUtil、使用 ViewHolder、使用异步加载、合理使用布局管理器、使用数据绑定、减少布局中嵌套层级、设置 RecyclerView 的固定大小、禁止自动滑动、使用预加载等。我们可以根据实际需求选择合适的优化方案,提升 RecyclerView 的性能,使其更加流畅。

Android 学习笔录

Android 性能优化篇
Android 车载篇
Android 逆向安全学习笔记
Android Framework底层原理篇

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导,让我们一起学习成长

蒙获取)**
[外链图片转存中…(img-VtMLtfKF-1712698064108)]


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号