全文搜索:搜索完成后关闭搜索显示,未搜索到内容提示用户

This commit is contained in:
Xwite
2022-01-30 10:19:40 +08:00
parent d5f1d42984
commit 3a211ffacb
10 changed files with 27 additions and 12 deletions
@@ -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)
}
}
}
@@ -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>"