Я использую приведенный ниже код в моем адаптере утилизатора, что приводит к производительности прокрутки в устройстве с низкой конфигурацией (например, 2 ГБ оперативной памяти). Я хочу проверить каждый элемент в адаптере для обновления ClickableSpan
Как оптимизировать нижекод, который не должен влиять на производительность прокрутки
val spanableString = SpannableString(receivedText)
val textToSearch = userName
val pattern = Pattern.compile(textToSearch, Pattern.LITERAL)
val matcher = pattern.matcher(spanableString)
while (matcher.find()) {
val myClickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
}
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = false
ds.typeface = Typeface.createFromAsset(context.assets, "fonts/poppinsmedium.ttf")
ds.color = Color.BLUE
}
}
spanableString.setSpan(myClickableSpan, matcher.start(), matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}