Как оптимизировать Set ClickableSpan в адаптере Recyclerview - PullRequest
0 голосов
/ 01 ноября 2019

Я использую приведенный ниже код в моем адаптере утилизатора, что приводит к производительности прокрутки в устройстве с низкой конфигурацией (например, 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)
}
...