RustAssistant/app/src/main/java/com/coldmint/rust/pro/SearchResultActivity.kt
2022-08-14 10:43:53 +08:00

110 lines
4.1 KiB
Kotlin

package com.coldmint.rust.pro
import android.os.Bundle
import android.view.LayoutInflater
import androidx.core.view.isVisible
import com.coldmint.rust.core.dataBean.user.SearchResultDataBean
import com.coldmint.rust.core.interfaces.ApiCallBack
import com.coldmint.rust.core.web.Search
import com.coldmint.rust.core.web.ServerConfiguration
import com.coldmint.rust.pro.adapters.SearchPageAdapter
import com.coldmint.rust.pro.base.BaseActivity
import com.coldmint.rust.pro.databinding.ActivitySearchResultBinding
import com.google.android.material.tabs.TabLayoutMediator
/**
* 搜索activity
*/
class SearchResultActivity : BaseActivity<ActivitySearchResultBinding>() {
lateinit var keyWord: String
val typeMap by lazy {
val map = HashMap<String, Int>()
map["mod"] = R.string.search_type_mod
map["user"] = R.string.search_type_user
map["dynamic"] = R.string.search_type_dynamic
map["mod_comments"] = R.string.search_type_mod_comments
map["mod_versions"] = R.string.search_type_mod_versions
map["purchase_plan"] = R.string.search_type_purchase_plan
map
}
override fun whenCreateActivity(savedInstanceState: Bundle?, canUseView: Boolean) {
if (canUseView) {
setReturnButton()
loadData(keyWord)
title = String.format(getString(R.string.search_mod_key), keyWord)
} else {
val thisIntent = intent
val key = thisIntent.getStringExtra("key")
if (key == null) {
showError("key为null")
return
}
keyWord = key
}
}
/**
* 加载数据
* @param keyWord String
*/
fun loadData(keyWord: String) {
Search.instance.searchAll(keyWord, object : ApiCallBack<SearchResultDataBean> {
override fun onResponse(t: SearchResultDataBean) {
if (t.code == ServerConfiguration.Success_Code) {
val list = t.data.total
if (list.isNotEmpty()) {
val adapter = SearchPageAdapter(this@SearchResultActivity, keyWord, t.data)
viewBinding.viewPager2.adapter = adapter
TabLayoutMediator(viewBinding.tabLayout, viewBinding.viewPager2) { tab, i ->
tab.text = if (i == 0) {
getString(R.string.search_type_mod_all) + "(" + t.data.total.size + ")"
} else {
val typeData = t.data.type[i - 1]
val id = typeMap[typeData.typeName] ?: -1
val name = if (id == -1) {
typeData.typeName
} else {
getString(id)
}
name + "(" + typeData.num + ")"
}
}.attach()
viewBinding.progressBar.isVisible = false
viewBinding.tipView.isVisible = false
viewBinding.contentLayout.isVisible = true
title = String.format(
getString(R.string.search_mod_key),
keyWord
)
} else {
showInfoToView(t.message)
}
} else {
showInfoToView(t.message)
}
}
override fun onFailure(e: Exception) {
showInfoToView(this@SearchResultActivity.getString(R.string.network_error))
}
})
}
/**
* 显示信息到视图
* @param text String
*/
fun showInfoToView(text: String) {
viewBinding.tipView.isVisible = true
viewBinding.tipView.text = text
viewBinding.progressBar.isVisible = false
viewBinding.contentLayout.isVisible = false
}
override fun getViewBindingObject(layoutInflater: LayoutInflater): ActivitySearchResultBinding {
return ActivitySearchResultBinding.inflate(layoutInflater)
}
}