@@ -148,16 +148,20 @@ class SearchContentActivity :
|
||||
searchResults = viewModel.searchChapter(query, bookChapter)
|
||||
}
|
||||
}
|
||||
binding.tvCurrentSearchInfo.text = this@SearchContentActivity.getString(R.string.search_content_size) +": ${viewModel.searchResultCounts}"
|
||||
if (searchResults.isNotEmpty()) {
|
||||
viewModel.searchResultList.addAll(searchResults)
|
||||
binding.refreshProgressBar.isAutoLoading = false
|
||||
binding.tvCurrentSearchInfo.text = this@SearchContentActivity.getString(R.string.search_content_size) +": ${viewModel.searchResultCounts}"
|
||||
adapter.addItems(searchResults)
|
||||
searchResults = listOf()
|
||||
}
|
||||
}
|
||||
binding.refreshProgressBar.isAutoLoading = false
|
||||
if (viewModel.searchResultCounts == 0) {
|
||||
val noSearchResult = SearchResult(resultText = getString(R.string.search_content_empty))
|
||||
adapter.addItem(noSearchResult)
|
||||
}
|
||||
}
|
||||
binding.refreshProgressBar.isAutoLoading = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class SearchContentAdapter(context: Context, val callback: Callback) :
|
||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSearchListBinding) {
|
||||
holder.itemView.setOnClickListener {
|
||||
getItem(holder.layoutPosition)?.let {
|
||||
callback.openSearchResult(it)
|
||||
if (!it.query.isBlank()) callback.openSearchResult(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,10 +75,13 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati
|
||||
|
||||
private fun searchPosition(pattern: String): List<Int> {
|
||||
val position: MutableList<Int> = mutableListOf()
|
||||
if (mContent.indexOf(pattern) >= 0) {
|
||||
var index = mContent.indexOf(pattern)
|
||||
if (index >= 0) {
|
||||
//搜索到内容允许净化
|
||||
if (book?.getUseReplaceRule() ?: false) mContent = contentProcessor!!.replaceContent(mContent)
|
||||
var index = mContent.indexOf(pattern)
|
||||
if (book!!.getUseReplaceRule()) {
|
||||
mContent = contentProcessor!!.replaceContent(mContent)
|
||||
index = mContent.indexOf(pattern)
|
||||
}
|
||||
while (index >= 0) {
|
||||
position.add(index)
|
||||
index = mContent.indexOf(pattern, index + 1)
|
||||
|
||||
@@ -8,7 +8,7 @@ data class SearchResult(
|
||||
val resultCountWithinChapter: Int = 0,
|
||||
val resultText: String = "",
|
||||
val chapterTitle: String = "",
|
||||
val query: String,
|
||||
val query: String = "",
|
||||
val pageSize: Int = 0,
|
||||
val chapterIndex: Int = 0,
|
||||
val pageIndex: Int = 0,
|
||||
@@ -17,14 +17,18 @@ data class SearchResult(
|
||||
) {
|
||||
|
||||
fun getHtmlCompat(textColor: String, accentColor: String): Spanned {
|
||||
val queryIndexInSurrounding = resultText.indexOf(query)
|
||||
val leftString = resultText.substring(0, queryIndexInSurrounding)
|
||||
val rightString = resultText.substring(queryIndexInSurrounding + query.length, resultText.length)
|
||||
val html = leftString.colorTextForHtml(textColor) +
|
||||
query.colorTextForHtml(accentColor) +
|
||||
rightString.colorTextForHtml(textColor) +
|
||||
chapterTitle.colorTextForHtml(accentColor)
|
||||
return HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
if (!query.isBlank()) {
|
||||
val queryIndexInSurrounding = resultText.indexOf(query)
|
||||
val leftString = resultText.substring(0, queryIndexInSurrounding)
|
||||
val rightString = resultText.substring(queryIndexInSurrounding + query.length, resultText.length)
|
||||
val html = leftString.colorTextForHtml(textColor) +
|
||||
query.colorTextForHtml(accentColor) +
|
||||
rightString.colorTextForHtml(textColor) +
|
||||
chapterTitle.colorTextForHtml(accentColor)
|
||||
return HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
} else {
|
||||
return HtmlCompat.fromHtml(resultText.colorTextForHtml(textColor), HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.colorTextForHtml(textColor: String) = "<font color=#${textColor}>$this</font>"
|
||||
|
||||
Reference in New Issue
Block a user