当我们在recyclerview中使用searchview时,我们如何将搜索到的字符着色?
How can we have searched characters colored when we use searchview in recyclerview?
我有一个 recyclerview,我想借助 searchview 在其中进行搜索。我希望我搜索到的字符是彩色的并且是特定的。
我正在使用 Kotlin 编程。
经过一番努力,我自己找到了答案。我使用这样的函数:
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" 将为红色。
我有一个 recyclerview,我想借助 searchview 在其中进行搜索。我希望我搜索到的字符是彩色的并且是特定的。
我正在使用 Kotlin 编程。
经过一番努力,我自己找到了答案。我使用这样的函数:
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" 将为红色。