gpt4 book ai didi

android - 为 RecyclerView 缓存 Spannable 字符串

转载 作者:太空狗 更新时间:2023-10-29 14:38:40 25 4
gpt4 key购买 nike

我有一个 Recyclerview,它包含很多消息,类似于聊天屏幕。

在每个列表项中,我都有一个 TextView,我在其中设置了 Spannable 字符串。字符串包含图像和文本,有时只是文本。当有大量字符需要用图像替换时,我必须用 Drawables 替换字符串中的一些字符的方法会变得非常昂贵,开始出现明显的抖动/滞后 onScroll 。我还将成本高昂的方法放在 AsyncTask 中,这大大提高了 RecyclerView 的速度。

问题:

是否可以缓存一个 Spannable 对象及其所有元数据?如果用户向上滚动一两个屏幕然后向下滚动,我想尝试避免每次在屏幕上呈现该行时构建 Spannables

如果缓存是可能的,我什至会更进一步实现一个“预缓存”方法,它在一个单独的线程上构建和缓存 Spannables,这样如果用户上下滚动,它会简单地从缓存而不是构建它(如果它存在)会导致“更快”或“更流畅”的用户体验。

可绘制对象

可绘制对象是从 FilePaths 加载/创建的,作为 ImageSpan 插入到 spannable 字符串中,然后设置为 TextView异步任务。

最佳答案

首先,我建议您查看RecyclerViewsetItemViewCacheSize(int) 方法。接下来,如果您的 Spannable 中有很多可绘制对象,也许值得检查一下这些可绘制对象的大小,它们可能太大了。另一个想法是在将项目传递给 bindViewHolder 之前预编译整个项目列表。

关于android - 为 RecyclerView 缓存 Spannable 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com