diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt index a4ded34..4605383 100644 --- a/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt +++ b/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt @@ -522,7 +522,7 @@ class HomeFragment : // 健康知识 - 搜索 mBinding.healthKnowledgeView.setOnSearchClickListener { - navigateToHealthKnowledgeSearch() + navigateToHealthKnowledgeSearch(it) } @@ -545,7 +545,6 @@ class HomeFragment : onSuccess = { token -> mHealthToken = token loadCategories(token) - loadConsultationArticles(token) }, onFailure = { /* Token 获取失败,静默处理 */ } ) @@ -566,6 +565,9 @@ class HomeFragment : if (mKnowledgeCategories.isNotEmpty()) { loadKnowledgeArticles(mKnowledgeCategories[0].categoryId) } + if (categories.isNotEmpty() && categories.size >= 2) { + loadConsultationArticles(categories[1].categoryId) + } }, onFailure = { /* 栏目加载失败,静默处理 */ } ) @@ -584,15 +586,17 @@ class HomeFragment : } } - /** 加载健康咨询文章列表(categoryId=2) */ - private fun loadConsultationArticles(token: String) { - mHealthInfoRequest?.fetchArticleList( - token, 2, - onSuccess = { articles-> - mBinding.healthConsultationView.setArticles(articles) - }, - onFailure = { /* 文章加载失败,静默处理 */ } - ) + /** 加载健康咨询文章列表(categoryId) */ + private fun loadConsultationArticles(categoryId: Int) { + mHealthToken?.let { token -> + mHealthInfoRequest?.fetchArticleList( + token, categoryId, + onSuccess = { articles -> + mBinding.healthConsultationView.setArticles(articles) + }, + onFailure = { /* 文章加载失败,静默处理 */ } + ) + } } /** 跳转文章详情 H5 */ @@ -618,14 +622,14 @@ class HomeFragment : requireContext().startWebActivity(url, isFull = true, myTitle = "健康知识", hideStatus = true) } /** 跳转健康知识 搜索 */ - private fun navigateToHealthKnowledgeSearch() { + private fun navigateToHealthKnowledgeSearch(key: String) { val param = mViewModel.enCryptInfoUrl.value if (param.isNullOrEmpty()) { mViewModel.getSysEnCryptInfo(UrlConfig.getHomeBankH5Url()) showToast("网络错误") return } - val url = "${UrlConfig.getHealthNewsSearchH5Url()}?param=$param" + val url = "${UrlConfig.getHealthNewsSearchH5Url()}?param=$param&searchVal=$key" requireContext().startWebActivity(url, isFull = true, myTitle = "搜索", hideStatus = true) } diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt b/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt index 297449f..8d90b6c 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt @@ -41,7 +41,6 @@ object UrlConfig { //手机银行 const val SECRET_KEY = "XJp3EHpcnwReXc1A" private const val TEST_HOME_BANK_IP = "https://gstest.superwx.cn/" - private const val PRODUCT_HOME_BANK_IP = "https://api-jkglpt.iosp.ydpt.tech/" val baseUrlType: BaseUrlType = BaseUrlType.PRODUCT @@ -82,7 +81,7 @@ object UrlConfig { } BaseUrlType.PRODUCT -> { - PRODUCT_HOME_BANK_IP + PRODUCT_DEFAULT_IP_ADDRESS_REMOTE } } } @@ -103,6 +102,18 @@ object UrlConfig { } } + fun getH5BaseXjUrl(baseUrlType: BaseUrlType = BaseUrlType.PRODUCT): String { + return when (baseUrlType) { + BaseUrlType.DEBUG, BaseUrlType.TEST -> { + TEST_HOME_BANK_IP + } + + BaseUrlType.PRODUCT -> { + "$PRODUCT_H5_ADDRESS_REMOTE/hb/" + } + } + } + fun getBankH5Url(baseUrlType: BaseUrlType = BaseUrlType.PRODUCT): String { return when (baseUrlType) { BaseUrlType.DEBUG, BaseUrlType.TEST-> { @@ -129,7 +140,7 @@ object UrlConfig { * 健康资讯 H5 页面基础地址 */ fun getHealthNewsH5BaseUrl(): String { - return getDefaultBankBaseUrl() + "healthnewsweb/" + return getH5BaseXjUrl() + "healthnewsweb/" } /** diff --git a/app/src/main/java/com/xjjk/healthyclients/view/HealthKnowledgeView.kt b/app/src/main/java/com/xjjk/healthyclients/view/HealthKnowledgeView.kt index 8441779..8d580f3 100644 --- a/app/src/main/java/com/xjjk/healthyclients/view/HealthKnowledgeView.kt +++ b/app/src/main/java/com/xjjk/healthyclients/view/HealthKnowledgeView.kt @@ -2,10 +2,14 @@ package com.xjjk.healthyclients.view import android.content.Context import android.util.AttributeSet +import android.view.KeyEvent import android.view.LayoutInflater +import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodManager import android.widget.RelativeLayout import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager +import com.sw.healthyclients.view.CustomToast import com.xjjk.healthyclients.R import com.xjjk.healthyclients.adapter.HealthKnowledgeAdapter import com.xjjk.healthyclients.bean.home.ArticleBean @@ -31,7 +35,7 @@ class HealthKnowledgeView(context: Context?, attrs: AttributeSet?) : private var mOnTabSelectedListener: ((CategoryBean) -> Unit)? = null private var mOnItemClickListener: ((ArticleBean) -> Unit)? = null private var mOnMoreClickListener: (() -> Unit)? = null - private var mOnSearchClickListener: (() -> Unit)? = null + private var mOnSearchClickListener: ((String) -> Unit)? = null init { mBinding.rvList.layoutManager = LinearLayoutManager(mContext) @@ -48,8 +52,33 @@ class HealthKnowledgeView(context: Context?, attrs: AttributeSet?) : } // 健康知识 - 搜索 - mBinding.searchView.root.setOnClickListener { - mOnSearchClickListener?.invoke() + mBinding.searchView.customSearchTv.setOnClickListener { + val toString = mBinding.searchView.customSearchEt.text.toString() + if (toString.isEmpty()) { + CustomToast.makeText(context, "请输入搜索内容", CustomToast.LENGTH_SHORT).show() + return@setOnClickListener + } + mOnSearchClickListener?.invoke(toString) + } + + // 键盘搜索键监听 + mBinding.searchView.customSearchEt.setOnEditorActionListener { _, actionId, event -> + if (actionId == EditorInfo.IME_ACTION_SEARCH + || (event != null && event.keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_DOWN) + ) { + val keyword = mBinding.searchView.customSearchEt.text.toString() + if (keyword.isEmpty()) { + CustomToast.makeText(context, "请输入搜索内容", CustomToast.LENGTH_SHORT).show() + return@setOnEditorActionListener true + } + // 隐藏键盘 + val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager + imm?.hideSoftInputFromWindow(mBinding.searchView.customSearchEt.windowToken, 0) + mOnSearchClickListener?.invoke(keyword) + true + } else { + false + } } } @@ -60,6 +89,14 @@ class HealthKnowledgeView(context: Context?, attrs: AttributeSet?) : fun setupTabs(categories: MutableList) { mCategoryList.clear() mCategoryList.addAll(categories) + if (categories.isEmpty()) { + mBinding.tabLayout.visibility = GONE + mBinding.tvEmpty.visibility = VISIBLE + return + } + + mBinding.tabLayout.visibility = VISIBLE + mBinding.tvEmpty.visibility = GONE mBinding.tabLayout.removeAllTabs() val array = Array(categories.size) { @@ -103,7 +140,7 @@ class HealthKnowledgeView(context: Context?, attrs: AttributeSet?) : mOnMoreClickListener = listener } - fun setOnSearchClickListener(listener: () -> Unit) { + fun setOnSearchClickListener(listener: (keyword: String) -> Unit) { mOnSearchClickListener = listener } } diff --git a/app/src/main/res/layout/custom_search_view_home.xml b/app/src/main/res/layout/custom_search_view_home.xml index 51455e2..8841f8d 100644 --- a/app/src/main/res/layout/custom_search_view_home.xml +++ b/app/src/main/res/layout/custom_search_view_home.xml @@ -25,19 +25,25 @@ android:layout_marginLeft="@dimen/dp_17" android:src="@mipmap/ic_search" /> - +