当我们在 recyclerview 中使用 searchview 时,我们如何将搜索到的字符着色?

Posted

技术标签:

【中文标题】当我们在 recyclerview 中使用 searchview 时,我们如何将搜索到的字符着色?【英文标题】:How can we have searched characters colored when we use searchview in recyclerview? 【发布时间】:2020-04-24 22:39:28 【问题描述】:

我有一个 recyclerview,我想在 searchview 的帮助下进行搜索。我希望我搜索的字符是彩色的并且是特定的。

我正在使用 Kotlin 编程。

【问题讨论】:

添加更多解释,例如,如果您有想要的设计,请添加图片 另外,添加您目前尝试过的代码 【参考方案1】:

经过一番努力,我自己找到了答案。我使用这样的函数:

fun colorsearch(a:String,charText: String):SpannableStringBuilder
    var l = 0
    var b:ArrayList<Int>
    b = ArrayList()
    var w = 0
    var i = 0
    if (charText!="")
        label@ while (i < a.length) 
            var j=0
            while (j<charText.length)
                Log.v("abc", j.toString())
                if (i == a.length)
                    break@label
                while ((a[i] != charText[j])) 
                    if (j != 0) 
                        continue@label
                    
                    i++
                    if (i == a.length)
                        break@label
                
                i++
                j++
            
            b.add(i)
            w++
            if (i == a.length)
                break@label
        
    

    val searchtitle = SpannableStringBuilder(a)
    while (l < w) 
        searchtitle.setSpan(
            ForegroundColorSpan(Color.RED),
            b[l] - charText.length, b[l],
            Spanned.SPAN_EXCLUSIVE_INCLUSIVE
        )
        l++
    
    return searchtitle

“a”中的“charText”将为红色。

【讨论】:

如何将 Kotlin 转换为 Java? 我认为它们很相似。也许这里可以帮助你:***.com/questions/34957430/…@Sanidhya Setu

以上是关于当我们在 recyclerview 中使用 searchview 时,我们如何将搜索到的字符着色?的主要内容,如果未能解决你的问题,请参考以下文章

【源码解析】RecyclerView的工作原理

聊聊RecyclerView新出的ConcatAdapter如何使用

聊聊RecyclerView新出的ConcatAdapter如何使用

recyclerview 在滚动时坚持使用图像放大/缩小动画的位置

RecyclerView的行项目视图隐藏/显示在Recyclerview的滚动上搞砸了

RecyclerView 知识梳理 - Adapter