列表型布局套路总结

本文总结了在Android开发中使用列表布局的重要知识点,包括如何处理多类型复杂结构列表,利用MultiType框架简化Adapter的管理;通过自定义SmoothScroller控制列表滚动速度;解决列表项自我位置感知的特殊需求;以及针对RecyclerView的一个未报告bug的临时解决方案,关注AOSP的修复进展。
摘要由CSDN通过智能技术生成

手机屏幕尺寸有限,几乎每个 app 的内容区,都会用列表呈现。不信可以打开你手机里的任意一个 app 看看,99%的 app 的内容区都能被抽象成一个大列表。只是根据内容的丰富度,列表的复杂度有所不同。内容区的结构骨架,基本上就是由列表布局奠定的。从这点看,虽然还有其他各种类型的布局,但是它们都没有列表型的布局来得重要。
总的来说,必须知道的有 如何应对多类型复杂结构几个滚动相关的实用的特别交互、和使用 RecyclerView 注意要填的坑。这些足以覆盖 90% 的业务场景。
(Android 的列表布局多由RecyclerView实现,以下内容均基于RecyclerView)

应对复杂结构列表

我安利 MultiType

从前,比如我们写一个类似微博列表页面,这样的列表是十分复杂的:有纯文本的、带转发原文的、带图片的、带视频的、带文章的等等,甚至穿插一条可以横向滑动的好友推荐条目。不同的 item 类型众多,而且随着业务发展,还会更多。如果我们使用传统的开发方式,经常要做一些繁琐的工作,代码可能都堆积在一个 Adapter 中:我们需要覆写 RecyclerView.Adapter 的 getItemViewType 方法,罗列一些 type 整型常量,并且 ViewHolder 转型、绑定数据也比较麻烦。一旦产品需求有变,或者产品设计说需要增加一种新的 item 类型,我们需要去代码堆里找到原来的逻辑去修改,或找到正确的位置去增加代码。这些过程都比较繁琐,侵入较强,需要小心翼翼,以免改错影响到其他地方。
现在好了,我们有了 MultiType,简单来说,MultiType 就是一个多类型列表视图的中间分发框架,它能帮助你快速并且清晰地开发一些复杂的列表页面,数据驱动视图。 它本是为聊天页面开发的,聊天页面的消息类型也是有大量不同种类,且新增频繁,而 MultiType 能够轻松胜任。

列表滚动速度控制

通过自定义 LayoutManager 的 SmoothScroller。

public class WrapContentLinearLayoutManager extends LinearLayoutManager {
   
    private static float MILLISECONDS_PER_INCH = 25f; /
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值