package com.yidianling.consultant import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.animation.ObjectAnimator import android.animation.PropertyValuesHolder import android.app.Activity import android.content.Context import android.content.Intent import android.graphics.Typeface import android.os.Handler import android.text.TextUtils import android.view.View import android.view.WindowManager import android.view.inputmethod.InputMethodManager import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter import com.google.android.material.appbar.AppBarLayout import com.ydl.webview.H5Params import com.ydl.webview.NewH5Activity import com.ydl.ydl_image.config.SimpleImageOpConfiger import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener import com.ydl.ydl_image.manager.YDLImageCacheManager import com.ydl.ydlcommon.base.BaseMvpActivity import com.ydl.ydlcommon.base.config.HttpConfig import com.ydl.ydlcommon.bean.StatusBarOptions import com.ydl.ydlcommon.ui.LogoLoadingView import com.ydl.ydlcommon.utils.BuryPointUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.view.listener.EndlessRecyclerViewScrollListener import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.ToastUtil import com.yidianling.consultant.adapter.ExpertSearchAdapter import com.yidianling.consultant.bean.FunctionWordConsultBean import com.yidianling.consultant.constants.ConsultBIConstants import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.YDL_USER_CONSULT_SEARCH_CLICK import com.yidianling.consultant.listener.OnCategoriesSelectedListener import com.yidianling.consultant.listener.OnFilterConfirmListener import com.yidianling.consultant.listener.OnSortItemSelectedListener import com.yidianling.consultant.model.bean.* import com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils import com.yidianling.consultant.router.ConsultantIn import com.yidianling.consultant.ui.view.AreaPopupWindow import com.yidianling.consultant.ui.view.CategoryPopupWindow import com.yidianling.consultant.ui.view.FilterPopupWindow import com.yidianling.consultant.ui.view.SortPopupWindow import com.yidianling.consultant.ui.view.topView.RecommendListView import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import kotlinx.android.synthetic.main.consultant_activity_expert_search_list.* import kotlinx.android.synthetic.main.consultant_item_filter_online.view.* import kotlinx.android.synthetic.main.consultant_layout_search_content.* import kotlinx.android.synthetic.main.consultant_layout_search_toolbar.* import org.json.JSONObject import java.util.concurrent.Executors import java.util.concurrent.TimeUnit @Route(path = "/consult/list") class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPresenter>(), View.OnClickListener, IExpertSearchView, OnCategoriesSelectedListener, OnSortItemSelectedListener, OnFilterConfirmListener, SwipeRefreshLayout.OnRefreshListener { var bottomWordDisposable: Disposable? = null private lateinit var bottomWordlist: List<FunctionWordBean> private var searchWord: String? = "" override fun showImage(url: String?, imgView: ImageView) { YDLImageCacheManager.showImage(ExpertSearchActivity@ this, url, imgView) } override fun showImage(url: String?, imgView: ImageView, ops: SimpleImageOpConfiger) { YDLImageCacheManager.showImage(this, url, imgView, ops) } override fun showPromptPayment(promptPaymentBean: PromptPaymentBean) { } override fun showImage( url: String?, imgView: ImageView, width: Int, heigh: Int, ops: SimpleImageOpConfiger ) { YDLImageCacheManager.showImage(ExpertSearchActivity@ this, url, imgView, width, heigh, ops) } override fun layoutResId(): Int { return R.layout.consultant_activity_expert_search_list } override fun initDataAndEvent() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE or WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) initViews() initData(intent, false) rl_hot_fix_for_huawei.visibility = View.VISIBLE } override fun getStatusViewOptions(): StatusBarOptions { return StatusBarOptions(true, true) } companion object { const val EXTRA_CATEGORY = "category" const val EXTRA_CATEGORY_NAME = "category_name" const val EXTRA_SHOW_TYPE = "showType" const val EXTRA_FROM_PAGE = "fromPage" const val HOT_SEARCH_DOCTOR_NAME = "hot_search_doctor_name" private const val EXTRA_IS_SHOW_HOT = "isInitShowHot" private const val EXTRA_SEARCH_WORD = "searchWord" private const val EXTRA_RELATED_WORD = "related_word" private const val EXTRA_IS_RECCOMMEND_WORD = "is_reccommend_word" private const val EXTRA_IS_FROM_SPLASH = "isFromSplash" private const val FILTER_STATUS_NORMAL = 0 //默认筛选状态 private const val FILTER_STATUS_FILTERED = 1 //非默认筛选状态 private const val FILTER_STATUS_OPEN = 2 //筛选窗打开状态 const val FROM_ONLINE_EXPERT = 2 fun newIntent( activity: Activity, category: String, showType: Int, isInitShowHot: Boolean ): Intent { val intent = Intent(activity, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_CATEGORY, category) intent.putExtra(EXTRA_SHOW_TYPE, showType) intent.putExtra(EXTRA_IS_SHOW_HOT, isInitShowHot) return intent } fun start(context: Context, category: String) { val intent = Intent(context, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_CATEGORY, category) context.startActivity(intent) } fun start(context: Context, category: String, categoryName: String, showType: Int) { val intent = Intent(context, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_CATEGORY, category) intent.putExtra(EXTRA_CATEGORY_NAME, categoryName) intent.putExtra(EXTRA_SHOW_TYPE, showType) context.startActivity(intent) } /** * 搜索页面过来的 * @param sign2为14 仅用于埋点 * @param relatedWord 搜索内容的关联词 * @param isRecommendWords 是否是推荐词 */ fun startSearch( context: Context, searchWord: String?, sign2: String, relatedWord: String, isRecommendWords: Boolean ) { val intent = Intent(context, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_SEARCH_WORD, searchWord) intent.putExtra(EXTRA_RELATED_WORD, relatedWord) intent.putExtra(EXTRA_IS_RECCOMMEND_WORD, isRecommendWords) intent.putExtra("sign2", sign2) context.startActivity(intent) } fun start(context: Context, category: String, showType: Int, isFromSplash: Boolean) { val intent = Intent(context, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_CATEGORY, category) intent.putExtra(EXTRA_SHOW_TYPE, showType) intent.putExtra(EXTRA_IS_FROM_SPLASH, isFromSplash) context.startActivity(intent) } fun start(context: Context, isShowHot: Boolean, fromPageType: Int) { val intent = Intent(context, ExpertSearchActivity::class.java) intent.putExtra(EXTRA_IS_SHOW_HOT, isShowHot) intent.putExtra(EXTRA_FROM_PAGE, fromPageType) context.startActivity(intent) } fun start(context: Context) { val intent = Intent(context, ExpertSearchActivity::class.java) context.startActivity(intent) } } private val allFilter = AllFilter() //当前筛选 private val tempFilter = AllFilter() //临时筛选,未确认状态 private var curPage = 1 private val doctorList = ArrayList<ExpertServiceItem>() private var hasMore = true private var initCategory = "0" private var initShowType: Int = 1 private lateinit var doctorAdapter: ExpertSearchAdapter private lateinit var onScrollListener: EndlessRecyclerViewScrollListener private var headData: HeadData? = null //筛选数据 private var isFromSplash = false private val props1 = JSONObject() //筛选标题埋点参数 private var fromPageType: Int = 1 //从哪个页面跳转过来的 private var isRecommend = false //埋点数据 private var cateName: String? = null private var mSign2: String = "" // 用于搜索页面进来的埋点参数 private var isDoSearch: Boolean = false //埋点判断是否通过搜索进入埋点的 private var hasSelectedArea = false //是否选择过地区 private var hasSelectedSort = false //是否选择过排序 override fun createPresenter(): ExpertSearchPresenter = ExpertSearchPresenter() private fun initViews() { srlContainer.isEnabled = true tvSubject.setOnClickListener(this) tvArea.setOnClickListener(this) tvSort.setOnClickListener(this) tvFilter.setOnClickListener(this) btn_call.setOnClickListener(this) tv_guide.setOnClickListener(this) rl_search.setOnClickListener(this) srlContainer.setColorSchemeColors(ContextCompat.getColor(this, R.color.platform_main_theme)) srlContainer.setProgressViewOffset(false, 0, 200) srlContainer.setOnRefreshListener(this) recommendListView.addViewPagerScrollStateListener(object : RecommendListView.ViewPagerScrollStateCallback { override fun viewPagerScroll(isScrolling: Boolean) { //如果viewpager正在滚动,则禁止下拉刷新 srlContainer.isEnabled = !isScrolling } }) appbar_layout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _, i -> srlContainer.isEnabled = i >= 0 }) initNetLossView() btn_back.setOnClickListener { onBackPressed() } doctorAdapter = ExpertSearchAdapter(this, this, doctorList) val layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) rvExperts.layoutManager = layoutManager rvExperts.adapter = doctorAdapter doctorAdapter.setOnClickLister(object : ExpertSearchAdapter.OnClickLister { override fun onClick(searchWords: String) { allFilter.searchWord = searchWords refresh(false) } }) onScrollListener = object : EndlessRecyclerViewScrollListener(layoutManager) { private var isBtnShow: Boolean = false private var sIsScrolling = false override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) hideSoftInput() if (newState == RecyclerView.SCROLL_STATE_DRAGGING || newState == RecyclerView.SCROLL_STATE_SETTLING) { //滚动 ConsultAssistantDialogUtils.INSTANCE.hideAssistantActivity() sIsScrolling = true if (!this@ExpertSearchActivity.isFinishing) { // GlideApp.with(this@ExpertSearchActivity).pauseRequests() } } else if (newState == RecyclerView.SCROLL_STATE_IDLE) { //没有滚动 ConsultAssistantDialogUtils.INSTANCE.fitRequest( this@ExpertSearchActivity, "doctor_list", true ) if (sIsScrolling) { if (!this@ExpertSearchActivity.isFinishing) { // GlideApp.with(this@ExpertSearchActivity).resumeRequests() } } sIsScrolling = false; } } override fun onScrollTop() { val alpha = PropertyValuesHolder.ofFloat("alpha", 1f, 0f) val scaleX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f) val scaleY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f) val animator = ObjectAnimator.ofPropertyValuesHolder(image_scroll_top, alpha, scaleX, scaleY) .setDuration(200) animator.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { image_scroll_top.visibility = View.GONE isBtnShow = false } }) animator.start() } override fun onScrollDown() { if (isBtnShow) { return } val alpha = PropertyValuesHolder.ofFloat("alpha", 0f, 1f) val scaleX = PropertyValuesHolder.ofFloat("scaleX", 0f, 1f) val scaleY = PropertyValuesHolder.ofFloat("scaleY", 0f, 1f) val animator = ObjectAnimator.ofPropertyValuesHolder(image_scroll_top, alpha, scaleX, scaleY) .setDuration(200) animator.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { image_scroll_top.visibility = View.VISIBLE isBtnShow = true } }) animator.start() } override fun onScrollUp() { if (!isBtnShow) { return } val alpha = PropertyValuesHolder.ofFloat("alpha", 1f, 0f) val scaleX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f) val scaleY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f) val animator = ObjectAnimator.ofPropertyValuesHolder(image_scroll_top, alpha, scaleX, scaleY) .setDuration(200) animator.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { image_scroll_top.visibility = View.GONE isBtnShow = false } }) animator.start() } override fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView?) { if (hasMore) { getPresenter().fetchListData(allFilter, getPresenter().mExtras) } } } rvExperts.addOnScrollListener(onScrollListener) rvExperts.addOnScrollListener(YDLImageRecyclerOnScrollListener(ExpertSearchActivity@ this)) image_scroll_top.setOnClickListener(this) // initStatus() ConsultAssistantDialogUtils.INSTANCE.fitRequest(this, "doctor_list", true) } private fun initNetLossView() { v_loading.setListener(object : LogoLoadingView.LogoLoadingListener { override fun onDataResetClick() { rvExperts.visibility = View.GONE v_loading.visibility = View.VISIBLE ll_network_error.visibility = View.GONE v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null) refresh(false) } override fun onBackClick() { finish() } }) } override fun localData() { } //路由传递过来的参数 private fun getRouterParam() { if (null != intent && intent.hasExtra("routerParam")) { val params = intent.getStringExtra("routerParam") val paramsJson = JSONObject(params) initCategory = paramsJson.getString("cateId") cateName = paramsJson.getString("cateTitle") mSign2 = cateName!! initShowType = paramsJson.getString("showType").toInt() } } private fun initData(mIntent: Intent, isRefresh: Boolean) { fromPageType = mIntent.getIntExtra(EXTRA_FROM_PAGE, -1) initCategory = mIntent.getStringExtra(EXTRA_CATEGORY) ?: "" initShowType = mIntent.getIntExtra(EXTRA_SHOW_TYPE, 0) val relatedWord = mIntent.getStringExtra(EXTRA_RELATED_WORD) // 搜索内容的联想词 searchWord = mIntent.getStringExtra(EXTRA_SEARCH_WORD) val isRecommendWords = mIntent.getBooleanExtra(EXTRA_IS_RECCOMMEND_WORD, false) if (!TextUtils.isEmpty(relatedWord)) { // 判断搜索内容的联想词为空,则用搜索词进行搜索 allFilter.searchWord = relatedWord } else { allFilter.searchWord = searchWord } mSign2 = mIntent.getStringExtra("sign2") ?: "" getRouterParam() allFilter.showType.key = initShowType if (!TextUtils.isEmpty(initCategory) && initCategory != "0") { allFilter.categoryId2List.add(initCategory) } if (!TextUtils.isEmpty(cateName)) { tvSubject.text = cateName updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED) } getPresenter().fetchListHead() recommendListView.requestData(initCategory) if (isRefresh) { refresh(false) } tv_search_content.text = searchWord // 判断搜索词和联想词不一样,则显示匹配结果 LogUtil.e("searchWord:${searchWord}") LogUtil.e("relatedWord:${relatedWord}") if (!TextUtils.isEmpty(searchWord) && !TextUtils.isEmpty(relatedWord) && searchWord != relatedWord) { if (doctorList.size > 0 && doctorList[0].is_head_view) { doctorList[0] = ExpertServiceItem(true, searchWord.toString(), relatedWord) } else if (doctorList.size > 0) { doctorList.add(0, ExpertServiceItem(true, searchWord.toString(), relatedWord)) } else { doctorList.add(ExpertServiceItem(true, searchWord.toString(), relatedWord)) } } else { if (doctorList.size > 0 && doctorList[0].is_head_view) { doctorList.removeAt(0) } } v_loading.visibility = View.VISIBLE v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null) doctorAdapter.clickCount = 0 doctorAdapter.setIsRecommendWords(isRecommendWords) doctorAdapter.setEntrance(1) getPresenter().fetchFunctionWord(2) } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) initData(intent!!, true) } //返回键处理,热门搜索如果可见,则隐藏,来自启动页,则打开主界面 override fun onBackPressed() { if (isFromSplash) { ConsultantIn.mainIntent(this) } finish() } //获取筛选数据 override fun onHeadFetched(headData: HeadData?) { //头部数据获取到后初始化筛选数据 this.headData = headData headData?.let { it -> // allFilter.reorder = it.reorder[0] allFilter.showType = it.filters.showType[initShowType] if (it.highlighter.size > 0) { //设置热门搜索 initHotViews(lin_filter2, it.highlighter) } it.cates[0].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.childList.add(childrenBean) } it.cates[1].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.stressList.add(childrenBean) } it.cates[2].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.loveEmotionList.add(childrenBean) } it.cates[3].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.marriedFamilyList.add(childrenBean) } it.cates[4].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.personalGrowthList.add(childrenBean) } it.cates[5].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.interpersonalRelationshipList.add(childrenBean) } it.cates[6].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.careerDevelopmentList.add(childrenBean) } it.cates[7].children?.forEachIndexed { index, children -> val type = if (children.cate_name.length > 4) 2 else 1 val childrenBean = ChildrenBean(children.cate_name, children.cate_id, index <= 12, type) allFilter.mentalHealthList.add(childrenBean) } } } override fun onFunctionWordFetched(wordBean: MutableList<FunctionWordBean>) { //获取底纹词 bottomWordlist = wordBean if (bottomWordlist.isNullOrEmpty()) return if (!searchWord.isNullOrEmpty()) { tv_search_content.text = searchWord } else { if (bottomWordlist.size == 1) { tv_search_content.text = bottomWordlist[0].word } else { bottomWordDisposable = Observable.interval(0, 3, TimeUnit.SECONDS) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ tv_search_content.text = bottomWordlist[(it % bottomWordlist.size).toInt()].word }, { }, { }) } } } /** * 热门 */ private fun initHotViews(view: LinearLayout, hotData: List<HighlighterItem>) { if (view.childCount > 0) { return } for (hot in hotData) { val tv = View.inflate(mContext, R.layout.consultant_item_filter_online, null) as TextView val textView = tv.tvFree val params = LinearLayout.LayoutParams(0, RxImageTool.dp2px(22f)) params.weight = 1f params.setMargins(0, 0, RxImageTool.dp2px(10f), 0) textView.layoutParams = params textView.text = hot.value textView.setOnClickListener { if (textView.isSelected) { dealHotSelect(hot, false) textView!!.isSelected = false textView.paint.isFakeBoldText = false } else { dealHotSelect(hot, true) textView.isSelected = true textView.paint.isFakeBoldText = true // 埋点 ActionCountUtils.baiDuCountSign3( ConsultBIConstants.PART_ID_CONSULT_COUNSELOR_LIST_PAGE, ConsultBIConstants.ConsultEvent.POSITION_CHOICE_FILTER_CLICK, hot.value!!, "app", "" ) } filterLabelSet() //开始筛选数据 refresh() } view.addView(textView) } } /** * 处理热门搜索的选中逻辑 * * 1:主题 * 2:省 * 3:排序 * 4:咨询方式 * 5:年龄选择 * 6:其他选择 * 7:资质选择 * 8.市 * * @param isAdd 是否是添加 */ private fun dealHotSelect(hotData: HighlighterItem, isAdd: Boolean) { when (hotData.type) { "1" -> { // if (headData?.cates!!.size > 0) { // for (bean in headData?.cates!!) { // if (TextUtils.equals(hotData.id, bean.cateId.toString())) { // if (isAdd) { // if (allFilter.categories.size == 1 && allFilter.categories[0].cateId == "0") { // allFilter.categories.clear() // } // allFilter.categories.add(bean) // updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED) // } else { // allFilter.categories.remove(bean) // if (allFilter.categories.size == 0) { // allFilter.categories.add(headData?.cates?.get(0) ?: CateItem()) // updateFilterTextViewStatus(tvSubject, FILTER_STATUS_NORMAL) // } // } // } // } // if (allFilter.categories.size == 1 && "全部" != allFilter.categories[0].cateName) { // //显示选中标题 // tvSubject.text = allFilter.categories[0].cateName // } else { // //显示主标题 // tvSubject.text = "主题" // } // } updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED) } "2" -> {//省 if (headData?.region!!.size > 0) { val bean = RegionItem() if (isAdd) { //热门中如果选择过地区、要把其他已选中的置位未选中 if (hasSelectedArea) { for ((index, bean) in headData!!.highlighter.withIndex()) { if (bean.type == "2" || bean.type == "8") { val textview = lin_filter2.getChildAt(index) as TextView textview.isSelected = false textview.paint.isFakeBoldText = false } } } bean.code = hotData.id bean.value = hotData.value for (headBean in headData!!.region) { if (TextUtils.equals(headBean.code, bean.code)) { bean.sub = headBean.sub break } } allFilter.region = bean if (allFilter.region.value?.length ?: 0 > 4) { tvArea.text = allFilter.region.value?.substring(0, 3) + "..." } else { tvArea.text = allFilter.region.value } updateFilterTextViewStatus(tvArea, FILTER_STATUS_FILTERED) hasSelectedArea = true } else { allFilter.region = RegionItem() tvArea.text = "地区" updateFilterTextViewStatus(tvArea, FILTER_STATUS_NORMAL) hasSelectedArea = false } allFilter.sub = SubItem("不限", null) } } "3" -> { //排序 if (headData?.reorder!!.size > 0) { for (bean in headData?.reorder!!) { if (TextUtils.equals(hotData.id, bean.key.toString())) { if (isAdd) { if (hasSelectedSort) { for ((index, bean) in headData!!.highlighter.withIndex()) { if (bean.type == "3") { var textview = lin_filter2.getChildAt(index) as TextView textview.isSelected = false textview.paint.isFakeBoldText = false } } } allFilter.reorder = bean updateFilterTextViewStatus(tvSort, FILTER_STATUS_FILTERED) hasSelectedSort = true } else { allFilter.reorder = headData?.reorder?.get(0) ?: ReorderItem() updateFilterTextViewStatus(tvSort, FILTER_STATUS_NORMAL) hasSelectedSort = false } } } when { allFilter.reorder.value.equals("综合排序") -> tvSort.text = "排序" allFilter.reorder.value?.length ?: 0 > 4 -> tvSort.text = allFilter.reorder.value?.substring(0, 3) + "..." else -> tvSort.text = allFilter.reorder.value } } } "4" -> { //咨询方式 if (headData?.filters?.enquiry!!.isNotEmpty()) { for (bean in headData?.filters?.enquiry!!) { if (TextUtils.equals(hotData.id, bean.key.toString())) { if (isAdd) { allFilter.enquiries.add(bean) } else { allFilter.enquiries.remove(bean) } } } } if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.title.size > 0) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } filterLabelSet() } "5" -> { //年龄选择 if (headData?.filters?.age!!.isNotEmpty()) { for (bean in headData?.filters?.age!!) { if (TextUtils.equals(hotData.id, bean.key.toString())) { if (isAdd) { allFilter.ages.add(bean) } else { allFilter.ages.remove(bean) } } } } if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.title.size > 0) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } filterLabelSet() } "6" -> { //其他选择 if (headData?.filters?.other!!.isNotEmpty()) { for (bean in headData?.filters?.other!!) { if (TextUtils.equals(hotData.id, bean.key.toString())) { if (isAdd) { allFilter.others.add(bean) } else { allFilter.others.remove(bean) } } } } if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.title.size > 0) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } filterLabelSet() } "7" -> { //资质选择 if (headData?.filters?.title!!.isNotEmpty()) { for (bean in headData?.filters?.title!!) { if (TextUtils.equals(hotData.id, bean.key.toString())) { if (isAdd) { allFilter.title.add(bean) } else { allFilter.title.remove(bean) } } } } if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.title.size > 0) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } filterLabelSet() } "8" -> { //市 if (headData?.region!!.size > 0) { val bean = SubItem() if (isAdd) { //热门中如果选择过地区、要把其他已选中的置位未选中 if (hasSelectedArea) { for ((index, bean) in headData!!.highlighter.withIndex()) { if (bean.type == "2" || bean.type == "8") { var textview = lin_filter2.getChildAt(index) as TextView textview.isSelected = false textview.paint.isFakeBoldText = false } } } bean.code = hotData.id bean.value = hotData.value for (headBean in headData!!.region) { if (TextUtils.equals( headBean.code!!.substring(0, 2), bean.code!!.substring(0, 2) ) ) { allFilter.region = headBean break } } allFilter.sub = bean if (allFilter.sub.value?.length ?: 0 > 4) { tvArea.text = allFilter.sub.value?.substring(0, 3) + "..." } else { tvArea.text = allFilter.sub.value } updateFilterTextViewStatus(tvArea, FILTER_STATUS_FILTERED) hasSelectedArea = true } else { allFilter.region = RegionItem() allFilter.sub = SubItem("不限", null) tvArea.text = "地区" updateFilterTextViewStatus(tvArea, FILTER_STATUS_NORMAL) hasSelectedArea = false } } } } } //用于侧滑筛选过来更新快捷筛选选中状态 private fun updateOtherViews(otherData: List<OtherItem>) { if (lin_filter2.childCount > 0) { //清空选中 for (i in 0.until(lin_filter2.childCount)) { val textView = lin_filter2.getChildAt(i) as TextView textView.isSelected = false textView.paint.isFakeBoldText = false } //重置选中状态 for (other in otherData) { for (i in 0 until lin_filter2.childCount) { val textView = lin_filter2.getChildAt(i) as TextView if (textView.text == other.value) { textView.isSelected = true textView.paint.isFakeBoldText = true } } } } } /** * 获取专家列表数据 */ override fun onDoctorListFetched( data: MutableList<ExpertServiceItem>, extras: Extras?, curPage: Int ) { if (rvExperts.adapter != doctorAdapter) { rvExperts.adapter = doctorAdapter } // 如果是第一页 if (curPage == 1) { if (data.size >= 10) { hasMore = true doctorAdapter.hasMore = true } else { hasMore = false doctorAdapter.hasMore = false } if (doctorList.size > 0 && doctorList[0].is_head_view) { val expertServiceItem = doctorList[0] doctorList.clear() doctorList.add(expertServiceItem) } else { doctorList.clear() } } if (data.size == 0) { // data的长度为0的时候为最后一页 hasMore = false doctorAdapter.hasMore = false } else { doctorList.addAll(data) } doctorAdapter.notifyDataSetChanged() isDoSearch = false isRecommend = false v_loading.visibility = View.GONE ll_network_error.visibility = View.GONE rvExperts.visibility = View.VISIBLE srlContainer.isRefreshing = false // 埋点 val sign1 = data.joinToString(",") { it.id } ActionCountUtils.baiDuCountSign3( ConsultBIConstants.PART_ID_CONSULT_COUNSELOR_LIST_PAGE, ConsultBIConstants.POSITION_CONSULT_COUNSELOR_LIST_PAGE_VISIT, sign1, mSign2, "app" ) } override fun fetchListFailed(msg: String?) { isDoSearch = false isRecommend = false if (curPage == 1) { v_loading.setViewType( LogoLoadingView.TYPE_NET_LOSS, getString(R.string.consultant_reload_hint) ) v_loading.visibility = View.VISIBLE ll_network_error.visibility = View.GONE } else { ToastHelper.show("网络不给力") } dismissProgressDialog() srlContainer.isRefreshing = false } override fun fetchListEmpty(msg: String?) { isDoSearch = false isRecommend = false if (doctorList.size > 0 && doctorList[0].is_head_view) { val expertServiceItem = doctorList[0] doctorList.clear() doctorList.add(expertServiceItem) doctorAdapter.notifyDataSetChanged() v_loading.visibility = View.GONE ll_network_error.visibility = View.GONE rvExperts.visibility = View.VISIBLE } else { tv_reload.visibility = View.GONE tv_reload_hint.text = msg ll_network_error.visibility = View.VISIBLE iv_exception.setImageResource(R.drawable.platform_ico_img_zixun_empty) rvExperts.visibility = View.GONE dismissProgressDialog() srlContainer.isRefreshing = false } } override fun fetchFailed(msg: String?) { isDoSearch = false isRecommend = false if (msg != null) { ToastUtil.toastShort(msg) } v_loading.setViewType( LogoLoadingView.TYPE_NET_LOSS, getString(R.string.consultant_reload_hint) ) v_loading.visibility = View.VISIBLE ll_network_error.visibility = View.GONE rvExperts.visibility = View.GONE appbar_layout.setExpanded(false) dismissProgressDialog() } override fun showRefreshLayout() { srlContainer.isRefreshing = true } override fun onClick(v: View?) { when (v?.id) { R.id.image_scroll_top -> { scrollToTop() } R.id.tvSubject -> { props1.put("filtrate_first", "主题") hideSoftInput() appbar_layout.setExpanded(false) appbar_layout.postDelayed({ showSubjectPopupWindow() }, 300) } R.id.tvArea -> { props1.put("filtrate_first", "地区") hideSoftInput() appbar_layout.setExpanded(false) appbar_layout.postDelayed({ showAreaPopupWindow() }, 300) } R.id.tvSort -> { props1.put("filtrate_first", "排序") hideSoftInput() appbar_layout.setExpanded(false) appbar_layout.postDelayed({ showSortPopupWindow() }, 300) } R.id.tvFilter -> { props1.put("filtrate_first", "筛选") hideSoftInput() appbar_layout.setExpanded(false) appbar_layout.postDelayed({ showFilterPopupWindow() }, 300) } R.id.tv_guide -> { ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_CONSULT_GUIDE_CLICK) val h5param = H5Params(HttpConfig.H5_URL + "help/consultation/", "咨询指南") h5param.isShowMenu = true NewH5Activity.start(this, h5param) } R.id.btn_call -> { ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_ONLINE_CUSTOMER_CLICK) ConsultantIn.startP2PXiaoYi(this) } R.id.rl_search -> { ActionCountUtils.count(YDL_USER_CONSULT_SEARCH_CLICK) ARouter.getInstance() .build("/consult/hot_search") .withString(HOT_SEARCH_DOCTOR_NAME, tv_search_content.text.toString()) .navigation() } } } private fun scrollToTop() { if ((rvExperts.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition() > 10) { rvExperts.scrollToPosition(10) rvExperts.smoothScrollToPosition(0) } else { rvExperts.smoothScrollToPosition(0) } } //显示筛选弹窗 private fun showFilterPopupWindow() { tempFilter.categories.clear() tempFilter.categories.addAll(allFilter.categories) tempFilter.reorder = allFilter.reorder tempFilter.region = allFilter.region tempFilter.sub = allFilter.sub tempFilter.showType = allFilter.showType tempFilter.ages.clear() tempFilter.ages.addAll(allFilter.ages) //学历 tempFilter.doctorEdu.clear() tempFilter.doctorEdu.addAll(allFilter.doctorEdu) tempFilter.enquiries.clear() tempFilter.enquiries.addAll(allFilter.enquiries) // 擅长人群添加数据 tempFilter.specialityCrowd.clear() tempFilter.specialityCrowd.addAll(allFilter.specialityCrowd) tempFilter.others.clear() tempFilter.others.addAll(allFilter.others) tempFilter.priceRanges = allFilter.priceRanges tempFilter.priceRangesView = allFilter.priceRangesView if (headData?.filters != null) { val filterPopupWindow = FilterPopupWindow(this, headData?.filters!!, tempFilter) filterPopupWindow.setOnDismissListener { viewDim.visibility = View.INVISIBLE viewDim_filter.visibility = View.GONE if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.title.size > 0 || !TextUtils.isEmpty( allFilter.priceRanges?.min_price ) || !TextUtils.isEmpty(allFilter.priceRanges?.max_price) ) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } ConsultAssistantDialogUtils.INSTANCE.fitRequest(this, "doctor_list", true) } filterPopupWindow.isClippingEnabled = false filterPopupWindow.showAsDropDown(viewSep2) ConsultAssistantDialogUtils.INSTANCE.hideAssistantActivity() filterPopupWindow.onFilterConfirmListener = this updateFilterTextViewStatus(tvFilter, FILTER_STATUS_OPEN) viewDim.visibility = View.VISIBLE } else { ToastUtil.toastShort("数据初始化失败,请重试") getPresenter().fetchListHead() } } //筛选确认回调 override fun onFilterConfirmed() { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_OPEN) LogUtil.d( "filter: " + tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }.joinToString(",") + "," + tempFilter.ages.map { it.value }.joinToString(",") + "," + tempFilter.others.map { it.value }.joinToString(",") + "," + tempFilter.doctorEdu.map { it.value }.joinToString(",") ) props1.put( "filtrate_second", tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }.joinToString(",") + "," + tempFilter.ages.map { it.value }.joinToString(",") + "," + tempFilter.others.map { it.value }.joinToString(",") + "," + tempFilter.doctorEdu.map { it.value }.joinToString(",") ) BuryPointUtils.buryPoint("Filtrate", props1) // 埋点 if (tempFilter.specialityCrowd.size > 0) { val sign1 = tempFilter.specialityCrowd.joinToString(",") { it.value!! } ActionCountUtils.baiDuCountSign3( ConsultBIConstants.PART_ID_CONSULT_FILTER_PAGE, ConsultBIConstants.ConsultEvent.POSITION_GOODAT_CROWD_CLICK, sign1, "app", "" ) } allFilter.showType = tempFilter.showType allFilter.enquiries.clear() allFilter.enquiries.addAll(tempFilter.enquiries) allFilter.ages.clear() allFilter.ages.addAll(tempFilter.ages) //学历 allFilter.doctorEdu.clear() allFilter.doctorEdu.addAll(tempFilter.doctorEdu) // 擅长人群 allFilter.specialityCrowd.clear() allFilter.specialityCrowd.addAll(tempFilter.specialityCrowd) allFilter.others.clear() allFilter.others.addAll(tempFilter.others) allFilter.title.clear() allFilter.title.addAll(tempFilter.title) allFilter.priceRanges = tempFilter.priceRanges allFilter.priceRangesView = tempFilter.priceRangesView //判断主题选中,判断热门筛选中是否也有该主题 Executors.newCachedThreadPool().execute { if (headData!!.highlighter.size > 0) { for (index in 0.until(headData!!.highlighter.size)) { if (headData!!.highlighter[index].type == "4") { var textview = lin_filter2.getChildAt(index) as TextView this@ExpertSearchActivity.runOnUiThread { textview.isSelected = false textview.paint.isFakeBoldText = false } for (bean in allFilter.enquiries) { if (TextUtils.equals( bean.key.toString(), headData!!.highlighter[index].id ) ) { this@ExpertSearchActivity.runOnUiThread { textview.isSelected = true textview.paint.isFakeBoldText = true } break } } } if (headData!!.highlighter[index].type == "5") { var textview = lin_filter2.getChildAt(index) as TextView this@ExpertSearchActivity.runOnUiThread { textview.isSelected = false textview.paint.isFakeBoldText = false } for (bean in allFilter.ages) { if (TextUtils.equals( bean.value.toString(), headData!!.highlighter[index].id ) ) { this@ExpertSearchActivity.runOnUiThread { textview.isSelected = true textview.paint.isFakeBoldText = true } break } } } if (headData!!.highlighter[index].type == "6") { var textview = lin_filter2.getChildAt(index) as TextView this@ExpertSearchActivity.runOnUiThread { textview.isSelected = false textview.paint.isFakeBoldText = false } for (bean in allFilter.others) { if (TextUtils.equals( bean.key.toString(), headData!!.highlighter[index].id ) ) { this@ExpertSearchActivity.runOnUiThread { textview.isSelected = true textview.paint.isFakeBoldText = true } break } } } if (headData!!.highlighter[index].type == "7") { var textview = lin_filter2.getChildAt(index) as TextView this@ExpertSearchActivity.runOnUiThread { textview.isSelected = false textview.paint.isFakeBoldText = false } for (bean in allFilter.title) { if (TextUtils.equals( bean.key.toString(), headData!!.highlighter[index].id ) ) { this@ExpertSearchActivity.runOnUiThread { textview.isSelected = true textview.paint.isFakeBoldText = true } break } } } } } } filterLabelSet() //刷新快捷按钮选中状态 updateOtherViews(allFilter.others) refresh() } //筛选标题显示处理 private fun filterLabelSet() { if ((allFilter.others.size + allFilter.ages.size + allFilter.doctorEdu.size + allFilter.enquiries.size + allFilter.title.size + allFilter.specialityCrowd.size) == 1) { var text: String? = "" when { allFilter.others.size == 1 -> { text = allFilter.others[0].value } allFilter.ages.size == 1 -> { text = allFilter.ages[0].value } allFilter.enquiries.size == 1 -> { text = allFilter.enquiries[0].value } allFilter.title.size == 1 -> { text = allFilter.title[0].value } allFilter.specialityCrowd.size == 1 -> { text = allFilter.specialityCrowd[0].value } allFilter.doctorEdu.size == 1 -> { //学历 text = allFilter.doctorEdu[0].value } else -> { text = "筛选" } } if (text?.length ?: 0 > 4) { tvFilter.text = text?.substring(0, 3) + "..." } else { tvFilter.text = text } } else { tvFilter.text = "筛选" } } private var sortPopup: SortPopupWindow? = null //显示排序弹窗 private fun showSortPopupWindow() { if (headData?.reorder != null) { sortPopup = SortPopupWindow(this, headData?.reorder!!, allFilter.reorder, this) sortPopup!!.setOnDismissListener { viewDim.visibility = View.INVISIBLE if (allFilter.reorder != headData!!.reorder[0]) { updateFilterTextViewStatus(tvSort, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvSort, FILTER_STATUS_NORMAL) } } if (sortPopup!!.selectedSort != allFilter.reorder) { sortPopup!!.selectedSort = allFilter.reorder sortPopup!!.notifyDataSetChanged() } sortPopup!!.showAsDropDown(viewSep2) updateFilterTextViewStatus(tvSort, FILTER_STATUS_OPEN) viewDim.visibility = View.VISIBLE } else { ToastUtil.toastShort("数据初始化失败,请重试") getPresenter().fetchListHead() } } //排序选择回调 override fun onSortItemSelected(sortItem: ReorderItem) { ActionCountUtils.count( ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_SORT_CLICK, sortItem.value ?: "" ) when { sortItem.value.equals("综合排序") -> { tvSort.text = "排序" } sortItem.value?.length ?: 0 > 4 -> { tvSort.text = sortItem.value?.substring(0, 3) + "..." } else -> { tvSort.text = sortItem.value } } //判断排序选中,判断热门筛选中是否也有该排序 if (headData!!.highlighter.size > 0) { for (index in 0.until(headData!!.highlighter.size)) { if (headData!!.highlighter[index].type == "3") { var textview = lin_filter2.getChildAt(index) as TextView if (TextUtils.equals(sortItem.value, headData!!.highlighter[index].value)) { textview.isSelected = true textview.paint.isFakeBoldText = true hasSelectedSort = true } else { textview.isSelected = false textview.paint.isFakeBoldText = false } } } } updateFilterTextViewStatus(tvSort, FILTER_STATUS_OPEN) LogUtil.d("sortItem key: " + sortItem.key + " sortItem value: " + sortItem.value) props1.put("filtrate_second", sortItem.value) BuryPointUtils.buryPoint("Filtrate", props1) allFilter.reorder = sortItem sortPopup?.dismiss() refresh() } //显示地区弹窗 private fun showAreaPopupWindow() { if (headData?.region != null) { val regionPopupWindow = AreaPopupWindow( this, headData?.region ?: ArrayList(), allFilter.region, allFilter.sub ) regionPopupWindow.showAsDropDown(viewSep2) viewDim.visibility = View.VISIBLE updateFilterTextViewStatus(tvArea, FILTER_STATUS_OPEN) regionPopupWindow.setOnDismissListener { viewDim.visibility = View.INVISIBLE if (tvArea.text != "地区") { updateFilterTextViewStatus(tvArea, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvArea, FILTER_STATUS_NORMAL) } } regionPopupWindow.onRegionSelectedListener = object : AreaPopupWindow.OnRegionSelectedListener { override fun onRegionSelected(region: RegionItem, sub: SubItem) { updateFilterTextViewStatus(tvArea, FILTER_STATUS_OPEN) allFilter.region = region allFilter.sub = sub if (TextUtils.isEmpty(region.code) && TextUtils.isEmpty(sub.code)) { tvArea.text = "地区" } else if (!TextUtils.isEmpty(region.code) && !TextUtils.isEmpty(sub.code)) { if (region.value?.length ?: 0 > 4) { tvArea.text = region.value?.substring(0, 3) + "..." } else { tvArea.text = region.value } } else { if (sub.value?.length ?: 0 > 4) { tvArea.text = sub.value?.substring(0, 3) + "..." } else { tvArea.text = sub.value } } ActionCountUtils.count( ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_AREA_CLICK, region.value + "|" + sub.value ) //更新热门搜索显示状态 if (headData!!.highlighter.size > 0) { for ((index, hot) in headData!!.highlighter.withIndex()) { if (hot.type == "2" || hot.type == "8") { var textview = lin_filter2.getChildAt(index) as TextView //有选择城市 if (!TextUtils.isEmpty(sub.code)) { if (TextUtils.equals(sub.code, hot.id)) { textview.isSelected = true textview.paint.isFakeBoldText = true hasSelectedArea = true } else { textview.isSelected = false textview.paint.isFakeBoldText = false } } else { if (TextUtils.equals(region.code, hot.id)) { textview.isSelected = true textview.paint.isFakeBoldText = true hasSelectedArea = true } else { textview.isSelected = false textview.paint.isFakeBoldText = false } } } } } regionPopupWindow.dismiss() refresh() } } } else { ToastUtil.toastShort("数据初始化失败,请重试") getPresenter().fetchListHead() } } private var mHandler: Handler? = null /** * 显示主题弹窗 */ private fun showSubjectPopupWindow() { val categoryPopup = CategoryPopupWindow(this, allFilter) mHandler = Handler() mHandler!!.post { categoryPopup.updateData() } categoryPopup.setOnDismissListener { viewDim.visibility = View.INVISIBLE ConsultAssistantDialogUtils.INSTANCE.fitRequest(this, "doctor_list", true) } ConsultAssistantDialogUtils.INSTANCE.hideAssistantActivity() categoryPopup.onSubjectsSelectedListener = this categoryPopup.showAsDropDown(viewSep2) updateFilterTextViewStatus(tvSubject, FILTER_STATUS_OPEN) viewDim.visibility = View.VISIBLE } /** * 主题选择确认回调 * * 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态 */ override fun onCategoriesSelected(signLit: ArrayList<String>) { if (signLit.isNotEmpty()) { val sign1 = signLit.joinToString(",") { it } ActionCountUtils.baiDuCountSign3( ConsultBIConstants.PART_ID_CONSULT_COUNSELOR_LIST_PAGE, ConsultBIConstants.ConsultEvent.POSITION_TWO_CATEGORY_CLICK, sign1, "app", "" ) } if (allFilter.categoryId2List.size > 0 || allFilter.categoryId3List.size > 0) { updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvSubject, FILTER_STATUS_NORMAL) } refresh() } override fun onRefresh() { refresh(false) recommendListView.requestData(initCategory) } //刷新列表 private fun refresh(isShowRefresh: Boolean? = true) { srlContainer.isRefreshing = isShowRefresh!! onScrollListener.resetState() getPresenter().mExtras = null getPresenter().fetchListData(allFilter, getPresenter().mExtras) rvExperts.scrollToPosition(0) } //重置所有筛选 private fun resetFilter() { allFilter.categories.clear() allFilter.categories.add(headData?.cates?.get(0) ?: CateItem()) allFilter.reorder = headData?.reorder?.get(0) ?: ReorderItem() allFilter.region = RegionItem() allFilter.sub = SubItem() allFilter.enquiries.clear() allFilter.ages.clear() allFilter.doctorEdu.clear() allFilter.others.clear() updateFilterTextViewStatus(tvSubject, FILTER_STATUS_NORMAL) updateFilterTextViewStatus(tvArea, FILTER_STATUS_NORMAL) updateFilterTextViewStatus(tvSort, FILTER_STATUS_NORMAL) if (headData != null) { if (allFilter.showType != headData!!.filters.showType[1]) { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED) } else { updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL) } } } //设置筛选点击按钮状态 private fun updateFilterTextViewStatus(tv: TextView, status: Int) { when (status) { FILTER_STATUS_NORMAL -> { tv.typeface = Typeface.defaultFromStyle(Typeface.NORMAL) tv.setTextColor(ContextCompat.getColor(this, R.color.platform_colorTextDefault)) tv.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.platform_ic_arrow_drop_down_grey_500_18dp, 0 ) } FILTER_STATUS_FILTERED -> { tv.typeface = Typeface.DEFAULT_BOLD tv.setTextColor(ContextCompat.getColor(this, R.color.platform_main_theme)) tv.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.platform_ic_arrow_drop_down_grey_500_18dp, 0 ) } FILTER_STATUS_OPEN -> { tv.typeface = Typeface.DEFAULT_BOLD tv.setTextColor(ContextCompat.getColor(this, R.color.platform_colorTextDefault)) tv.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.platform_arrow_drop_down_en, 0 ) } } } private fun hideSoftInput() { val view = this.currentFocus if (view != null) { val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(view.windowToken, 0) } } override fun onResume() { super.onResume() ActionCountUtils.count(ConsultBIConstants.ConsultSearchListEvent.APP_CONSULT_SEARCH_LIST_PAGE_VISIT) } override fun onDestroy() { super.onDestroy() mHandler = null bottomWordDisposable?.dispose() ConsultAssistantDialogUtils.INSTANCE.expertSearchResetStatus() } }