前言
2021已经过去三个月,春节过年之后也有一个月了,我坐在出租屋的房子里写下这篇小结。
RichTextX是一个EditText拓展库,考虑基于EditText实现富文本的编辑和显示,因此开发了它,目前开源在Github。
开源地址:https://github.com/shine56/RichTextX
前段时间面试和面试官聊到了这个问题,下文解决方案本质就是一个设置锚点,由此去处理回调的过程。这样看,整件事情就的就变得很简单了。
稍微复杂点的就是,这个锚点并不是在开启异步任务时可以确定的,插入一张图片的position是受到它前边的图片的影响的。ImageSpan插入EditText中有占位的String的(一般设置为图片的url),那么图片插入和未插入会影响到下一张图的position。因此设置一个标志类还是有必要的。
在尝试自定义一个Html.TagHandler解析一段图文混排的文本时遇到一个问题:IO线程加载多张图像时,它们的回调时间是不可控的,导致他们插入到文本中的位置出错。
现在App大部分都不止一个列表,而每用一次都写一个适配器继承RecyclerView.Adapter重写它的方法。多次使用列表时,这项工作就变得重复冗余。我们可以使用lambda来封装一个可复用的Adapter。