Commit 0b9cc604 by YKai

feat:增加擅长人群标签,修改cate_id字段数据类型,升级相关组件

parent 257a75dc
......@@ -20,8 +20,8 @@ import java.util.List;
public final class DemoGlobalConfig implements IConfigModule {
String APP_DOMAIN = "https://api.github.com/";
// public static String appEnv = YDLConstants.ENV_AUTO_TEST;
// public static String appEnv = YDLConstants.ENV_TEST;
public static String appEnv = YDLConstants.ENV_PROD;
public static String appEnv = YDLConstants.ENV_TEST;
// public static String appEnv = YDLConstants.ENV_PROD;
@Override
public void injectAppLifecycle(@NotNull Context context, @NotNull List<IAppLifecycles> lifecycles) {
......
......@@ -6,12 +6,12 @@ ext {
// -------------- 业务模块 --------------
//第三步 若干
"m-confide" : "0.0.49.09",
"m-consultant" : "0.0.59.79",
"m-consultant" : "0.0.59.81",
"m-fm" : "0.0.30.03",
"m-user" : "0.0.61.36",
"m-home" : "0.0.22.64",
"m-im" : "0.0.19.22",
"m-dynamic" : "0.0.7.22",
"m-home" : "0.0.22.65",
"m-im" : "0.0.19.23",
"m-dynamic" : "0.0.7.24",
"m-article" : "0.0.0.8",
"m-muse" : "0.0.28.22",
......@@ -21,7 +21,7 @@ ext {
//-------------- 业务模块 API 层 --------------
"m-audioim-api" : "0.0.6",
"m-confide-api" : "0.0.2.11",
"m-consultant-api": "0.0.5.62",
"m-consultant-api": "0.0.5.63",
"m-course-api" : "0.0.3.6",
"m-fm-api" : "0.0.3",
"m-muse-api" : "0.0.1",
......@@ -89,12 +89,12 @@ ext {
//第三步 若干
"m-confide" : "0.0.49.09",
"m-consultant" : "0.0.59.79",
"m-consultant" : "0.0.59.81",
"m-fm" : "0.0.30.01",
"m-user" : "0.0.61.36",
"m-home" : "0.0.22.64",
"m-im" : "0.0.19.22",
"m-dynamic" : "0.0.7.22",
"m-home" : "0.0.22.65",
"m-im" : "0.0.19.23",
"m-dynamic" : "0.0.7.24",
"m-article" : "0.0.0.8",
"m-muse" : "0.0.20.7",
......@@ -102,8 +102,8 @@ ext {
"m-course" : "0.0.42.62",
//-------------- 业务模块 API 层 --------------
"m-audioim-api" : "0.0.6",
"m-confide-api" : "0.0.2.1",
"m-consultant-api": "0.0.5.62",
"m-confide-api" : "0.0.2.11",
"m-consultant-api": "0.0.5.63",
"m-course-api" : "0.0.3.6",
"m-fm-api" : "0.0.3",
"m-muse-api" : "0.0.1",
......@@ -133,7 +133,7 @@ ext {
dependencies = [
//support
"appcompat-v7" : 'androidx.appcompat:appcompat:1.2.0',
"design" : 'com.google.android.material:material:1.0.0',
"design" : 'com.google.android.material:material:1.3.0',
"support-v4" : 'androidx.legacy:legacy-support-v4:1.0.0',
"cardview-v7" : 'androidx.cardview:cardview:1.0.0',
"annotations" : "androidx.annotation:annotation:1.0.0",
......
......@@ -6,10 +6,7 @@ import com.ydl.ydlcommon.base.config.YDL_DOMAIN
import com.ydl.ydlcommon.base.config.YDL_DOMAIN_JAVA
import com.ydl.ydlcommon.data.http.BaseAPIResponse
import io.reactivex.Observable
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.QueryMap
import retrofit2.http.Url
import retrofit2.http.*
/**
* @author yuanwai
......@@ -22,7 +19,7 @@ interface ConfideHomeApi{
//倾诉首页
@Headers( YDL_DOMAIN + YDL_DOMAIN_JAVA,"Content-Type:application/json")
@GET
fun confideHome(@Url url: String): Observable<BaseAPIResponse<MutableList<ConfideHomeDataBean>>>
fun confideHome(@Url url: String,@Query("cateSource") cateSource:Int): Observable<BaseAPIResponse<MutableList<ConfideHomeDataBean>>>
//每日精选 换一批
@Headers( YDL_DOMAIN+ YDL_DOMAIN_JAVA,"Content-Type:application/json")
......
......@@ -35,7 +35,7 @@ class ConfideHomeHttpImpl private constructor(): IConfideHomeHttp{
override fun confideHomeRequest(): Observable<BaseAPIResponse<MutableList<ConfideHomeDataBean>>> {
return RxUtils.mapObservable(ConfideHomeParam(0))
.flatMap {
confideHomeApi.confideHome(HttpConfig.JAVA_BASE_URL+"auth/listen/home")
confideHomeApi.confideHome(HttpConfig.JAVA_BASE_URL+"auth/listen/home",2)
}
}
......
......@@ -76,7 +76,13 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
YDLImageCacheManager.showImage(ExpertSearchActivity@ this, url, imgView, ops)
}
override fun showImage(url: String?, imgView: ImageView, width: Int, heigh: Int, ops: SimpleImageOpConfiger) {
override fun showImage(
url: String?,
imgView: ImageView,
width: Int,
heigh: Int,
ops: SimpleImageOpConfiger
) {
YDLImageCacheManager.showImage(ExpertSearchActivity@ this, url, imgView, width, heigh, ops)
}
......@@ -113,7 +119,12 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
const val FROM_ONLINE_EXPERT = 2
const val PAGE_SIZE = 15
fun newIntent(activity: Activity, category: Int, showType: Int, isInitShowHot: Boolean): Intent {
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)
......@@ -121,13 +132,13 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
return intent
}
fun start(context: Context, category: Int) {
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: Int, categoryName: String, showType: Int) {
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)
......@@ -135,13 +146,14 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
context.startActivity(intent)
}
@JvmName("start1")
fun start(context: Context, searchWord: String?) {
val intent = Intent(context, ExpertSearchActivity::class.java)
intent.putExtra(EXTRA_SEARCH_WORD, searchWord)
context.startActivity(intent)
}
fun start(context: Context, category: Int, showType: Int, isFromSplash: Boolean) {
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)
......@@ -168,7 +180,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private val doctorList = ArrayList<DoctorServiceItem>()
private val serviceList = ArrayList<DoctorServiceItem>()
private var hasMore = true
private var initCategory: Int = 0
private var initCategory = "0"
private var initShowType: Int = 1
private lateinit var doctorAdapter: ExpertSearchAdapter
private lateinit var onScrollListener: EndlessRecyclerViewScrollListener
......@@ -200,7 +212,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
srlContainer.setProgressViewOffset(false, 0, 200)
srlContainer.setOnRefreshListener(this)
recommendListView.addViewPagerScrollStateListener(object : RecommendListView.ViewPagerScrollStateCallback {
recommendListView.addViewPagerScrollStateListener(object :
RecommendListView.ViewPagerScrollStateCallback {
override fun viewPagerScroll(isScrolling: Boolean) {
//如果viewpager正在滚动,则禁止下拉刷新
srlContainer.isEnabled = !isScrolling
......@@ -248,7 +261,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
} else if (newState == RecyclerView.SCROLL_STATE_IDLE) {
//没有滚动
ConsultAssistantDialogUtils.INSTANCE.fitRequest(this@ExpertSearchActivity, "doctor_list", true)
ConsultAssistantDialogUtils.INSTANCE.fitRequest(
this@ExpertSearchActivity,
"doctor_list",
true
)
if (sIsScrolling) {
if (!this@ExpertSearchActivity.isFinishing) {
// GlideApp.with(this@ExpertSearchActivity).resumeRequests()
......@@ -365,7 +382,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
if (null != intent && intent.hasExtra("routerParam")) {
val params = intent.getStringExtra("routerParam")
val paramsJson = JSONObject(params)
initCategory = paramsJson.getString("cateId").toInt()
initCategory = paramsJson.getString("cateId")
keyWord = paramsJson.getString("cateTitle")
initShowType = paramsJson.getString("showType").toInt()
}
......@@ -373,7 +390,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private fun initData(mIntent: Intent) {
fromPageType = mIntent.getIntExtra(EXTRA_FROM_PAGE, -1)
initCategory = mIntent.getIntExtra(EXTRA_CATEGORY, 0)
initCategory = mIntent.getStringExtra(EXTRA_CATEGORY)
initShowType = mIntent.getIntExtra(EXTRA_SHOW_TYPE, 0)
tv_search_content.text = mIntent.getStringExtra(EXTRA_SEARCH_WORD)
keyWord = mIntent.getStringExtra(EXTRA_CATEGORY_NAME) ?: ""
......@@ -391,7 +408,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
v_loading.visibility = View.VISIBLE
v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null)
doctorAdapter.setEntrance( 1)
doctorAdapter.setEntrance(1)
}
override fun onNewIntent(intent: Intent?) {
......@@ -426,7 +443,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
override fun onHeadFetched(headData: HeadData?) {
//头部数据获取到后初始化筛选数据
this.headData = headData
if (initCategory != 0) {
if (initCategory != "0") {
if (headData?.cates != null) {
for (cate in headData.cates) {
if (cate.cateId == initCategory) {
......@@ -444,7 +461,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
}
}
initCategory = 0
initCategory = "0"
} else {
allFilter.categories.clear()
allFilter.categories.add(headData?.cates?.get(0) ?: CateItem())
......@@ -514,7 +531,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
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) {
if (allFilter.categories.size == 1 && allFilter.categories[0].cateId == "0") {
allFilter.categories.clear()
}
allFilter.categories.add(bean)
......@@ -712,7 +729,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
bean.key = hotData.id
bean.value = hotData.value
for (headBean in headData!!.region) {
if (TextUtils.equals(headBean.key!!.substring(0, 2), bean.key!!.substring(0, 2))) {
if (TextUtils.equals(
headBean.key!!.substring(0, 2),
bean.key!!.substring(0, 2)
)
) {
allFilter.region = headBean
break
}
......@@ -764,7 +785,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
//服务列表数据获取到后的回调
override fun onServiceListFetched(data: MutableList<DoctorServiceItem>, page: Int, totalPage: Int) {
override fun onServiceListFetched(
data: MutableList<DoctorServiceItem>,
page: Int,
totalPage: Int
) {
LogUtil.d("onServiceListFetched")
// if (rvExperts.adapter != serviceAdapter) {
// rvExperts.adapter = serviceAdapter
......@@ -802,7 +827,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
//专家列表数据获取到后的回调
override fun onDoctorListFetched(data: MutableList<DoctorServiceItem>, page: Int, totalPage: Int) {
override fun onDoctorListFetched(
data: MutableList<DoctorServiceItem>,
page: Int,
totalPage: Int
) {
LogUtil.d("onDoctorListFetched")
if (rvExperts.adapter != doctorAdapter) {
rvExperts.adapter = doctorAdapter
......@@ -845,7 +874,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
isRecommend = false
if (curPage == 1) {
v_loading.setViewType(LogoLoadingView.TYPE_NET_LOSS, getString(R.string.consultant_reload_hint))
v_loading.setViewType(
LogoLoadingView.TYPE_NET_LOSS,
getString(R.string.consultant_reload_hint)
)
v_loading.visibility = View.VISIBLE
ll_network_error.visibility = View.GONE
......@@ -876,7 +908,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
if (msg != null) {
ToastUtil.toastShort(msg)
}
v_loading.setViewType(LogoLoadingView.TYPE_NET_LOSS, getString(R.string.consultant_reload_hint))
v_loading.setViewType(
LogoLoadingView.TYPE_NET_LOSS,
getString(R.string.consultant_reload_hint)
)
v_loading.visibility = View.VISIBLE
ll_network_error.visibility = View.GONE
......@@ -976,6 +1011,9 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tempFilter.ages.addAll(allFilter.ages)
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
......@@ -986,7 +1024,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
filterPopupWindow.setOnDismissListener {
// viewDim.visibility = View.INVISIBLE
viewDim_filter.visibility = View.GONE
if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.title.size > 0 || !TextUtils.isEmpty(allFilter.priceRanges?.minPrice) || !TextUtils.isEmpty(allFilter.priceRanges?.maxPrice)) {
if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.title.size > 0 || !TextUtils.isEmpty(
allFilter.priceRanges?.minPrice
) || !TextUtils.isEmpty(allFilter.priceRanges?.maxPrice)
) {
updateFilterTextViewStatus(tvFilter, FILTER_STATUS_FILTERED)
} else {
updateFilterTextViewStatus(tvFilter, FILTER_STATUS_NORMAL)
......@@ -1009,8 +1050,15 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//筛选确认回调
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(","))
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(","))
LogUtil.d("filter: " + tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }
.joinToString(",") + "," + tempFilter.ages.map { it.value }
.joinToString(",") + "," + tempFilter.others.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(",")
)
BuryPointUtils.buryPoint("Filtrate", props1)
......@@ -1019,6 +1067,9 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
allFilter.enquiries.addAll(tempFilter.enquiries)
allFilter.ages.clear()
allFilter.ages.addAll(tempFilter.ages)
// 擅长人群
allFilter.specialityCrowd.clear()
allFilter.specialityCrowd.addAll(tempFilter.specialityCrowd)
allFilter.others.clear()
allFilter.others.addAll(tempFilter.others)
allFilter.title.clear()
......@@ -1077,7 +1128,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview.paint.isFakeBoldText = false
}
for (bean in allFilter.others) {
if (TextUtils.equals(bean.key.toString(), headData!!.highlighter[index].id)) {
if (TextUtils.equals(
bean.key.toString(),
headData!!.highlighter[index].id
)
) {
this@ExpertSearchActivity.runOnUiThread {
textview.isSelected = true
textview.paint.isFakeBoldText = true
......@@ -1094,7 +1149,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview.paint.isFakeBoldText = false
}
for (bean in allFilter.title) {
if (TextUtils.equals(bean.key.toString(), headData!!.highlighter[index].id)) {
if (TextUtils.equals(
bean.key.toString(),
headData!!.highlighter[index].id
)
) {
this@ExpertSearchActivity.runOnUiThread {
textview.isSelected = true
textview.paint.isFakeBoldText = true
......@@ -1168,8 +1227,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//排序选择回调
override fun onSortItemSelected(sortItem: ReorderItem) {
ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_SORT_CLICK, sortItem.value
?: "")
ActionCountUtils.count(
ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_SORT_CLICK, sortItem.value
?: ""
)
if (sortItem.value.equals("综合排序")) {
tvSort.text = "排序"
......@@ -1209,8 +1270,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//显示地区弹窗
private fun showAreaPopupWindow() {
if (headData?.region != null) {
val regionPopupWindow = AreaPopupWindow(this, headData?.region
?: ArrayList(), allFilter.region, allFilter.sub)
val regionPopupWindow = AreaPopupWindow(
this, headData?.region
?: ArrayList(), allFilter.region, allFilter.sub
)
regionPopupWindow.showAsDropDown(viewSep2)
viewDim.visibility = View.VISIBLE
updateFilterTextViewStatus(tvArea, FILTER_STATUS_OPEN)
......@@ -1222,69 +1285,73 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
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 (region.key == null && sub.key == null) {
regionPopupWindow.onRegionSelectedListener =
object : AreaPopupWindow.OnRegionSelectedListener {
override fun onRegionSelected(region: RegionItem, sub: SubItem) {
updateFilterTextViewStatus(tvArea, FILTER_STATUS_OPEN)
allFilter.region = region
allFilter.sub = sub
if (region.key == null && sub.key == null) {
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
tvArea.text = "地区"
} else if (region.key != null && sub.key == null) {
tvArea.text = "地区"
} else if (region.key != null && sub.key == null) {
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
if (region.value?.length ?: 0 > 4) {
tvArea.text = region.value?.substring(0, 3) + "..."
if (region.value?.length ?: 0 > 4) {
tvArea.text = region.value?.substring(0, 3) + "..."
} else {
tvArea.text = region.value
}
} else {
tvArea.text = region.value
}
} else {
// LogUtil.d("onRegionSelected: " + sub.value)
// props1.put("filtrate_second", sub.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
if (sub.value?.length ?: 0 > 4) {
tvArea.text = sub.value?.substring(0, 3) + "..."
} else {
tvArea.text = sub.value
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.key)) {
if (TextUtils.equals(sub.key, hot.id)) {
textview.isSelected = true
textview.paint.isFakeBoldText = true
hasSelectedArea = true
} else {
textview.isSelected = false
textview.paint.isFakeBoldText = false
}
} else {
if (TextUtils.equals(region.key, hot.id)) {
textview.isSelected = true
textview.paint.isFakeBoldText = true
hasSelectedArea = true
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.key)) {
if (TextUtils.equals(sub.key, hot.id)) {
textview.isSelected = true
textview.paint.isFakeBoldText = true
hasSelectedArea = true
} else {
textview.isSelected = false
textview.paint.isFakeBoldText = false
}
} else {
textview.isSelected = false
textview.paint.isFakeBoldText = false
if (TextUtils.equals(region.key, hot.id)) {
textview.isSelected = true
textview.paint.isFakeBoldText = true
hasSelectedArea = true
} else {
textview.isSelected = false
textview.paint.isFakeBoldText = false
}
}
}
}
}
regionPopupWindow.dismiss()
refresh()
}
regionPopupWindow.dismiss()
refresh()
}
}
} else {
ToastUtil.toastShort("数据初始化失败,请重试")
getPresenter().fetchListHead()
......@@ -1324,7 +1391,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
* 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态
*/
override fun onCategoriesSelected(categories: ArrayList<CateItem>) {
ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_THEME_CLICK, categories.map { it.cateName }.joinToString("|"))
ActionCountUtils.count(
ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_THEME_CLICK,
categories.map { it.cateName }.joinToString("|")
)
if (categories.size == 1 && "全部" != categories[0].cateName) {
//显示选中标题
tvSubject.text = categories[0].cateName
......@@ -1343,7 +1413,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview.paint.isFakeBoldText = false
}
for (bean in categories) {
if (TextUtils.equals(bean.cateName, headData!!.highlighter[index].value)) {
if (TextUtils.equals(
bean.cateName,
headData!!.highlighter[index].value
)
) {
this@ExpertSearchActivity.runOnUiThread {
textview.isSelected = true
textview.paint.isFakeBoldText = true
......@@ -1400,7 +1474,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
// return
// }
ActionCountUtils.count(ConsultBIConstants.UserMainEvent.YDL_USER_SEARCH_CLICK, keyWord ?: "")
ActionCountUtils.count(
ConsultBIConstants.UserMainEvent.YDL_USER_SEARCH_CLICK,
keyWord ?: ""
)
isDoSearch = true
resetFilter()
refresh()
......@@ -1436,12 +1513,22 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
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)
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)
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_ic_arrow_drop_down_grey_500_18dp,
0
)
}
FILTER_STATUS_OPEN -> {
tv.typeface = Typeface.DEFAULT_BOLD
......
......@@ -48,7 +48,6 @@ 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.modular.singlton.ConsultAssistantDialogUtils.Companion.REALATION_EDUCATION
import com.yidianling.consultant.router.ConsultantIn
import com.yidianling.consultant.ui.view.AreaPopupWindow
import com.yidianling.consultant.ui.view.CategoryPopupWindow
......@@ -70,8 +69,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
View.OnClickListener, IExpertSearchView,
OnCategoriesSelectedListener, OnSortItemSelectedListener, OnFilterConfirmListener,
SwipeRefreshLayout.OnRefreshListener {
private lateinit var mContext:Context
private lateinit var mActivity:FragmentActivity
private lateinit var mContext: Context
private lateinit var mActivity: FragmentActivity
override fun layoutResId(): Int {
return R.layout.consultant_activity_expert_search_list
......@@ -154,7 +153,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private val doctorList = ArrayList<DoctorServiceItem>()
private val serviceList = ArrayList<DoctorServiceItem>()
private var hasMore = true
private var initCategory: Int = 0
private var initCategory = "0"
private var initShowType: Int = 0
private lateinit var doctorAdapter: ExpertSearchAdapter
private lateinit var onScrollListener: EndlessRecyclerViewScrollListener
......@@ -181,7 +180,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
btn_call.setOnClickListener(this)
tv_guide.setOnClickListener(this)
rl_search.setOnClickListener(this)
srlContainer.setColorSchemeColors(ContextCompat.getColor(mActivity, R.color.platform_main_theme))
srlContainer.setColorSchemeColors(
ContextCompat.getColor(
mActivity,
R.color.platform_main_theme
)
)
srlContainer.setProgressViewOffset(false, 0, 200)
srlContainer.setOnRefreshListener(this)
initNetLossView()
......@@ -395,7 +399,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
override fun onHeadFetched(headData: HeadData?) {
//头部数据获取到后初始化筛选数据
this.headData = headData
if (initCategory != 0) {
if (initCategory != "0") {
if (headData?.cates != null) {
for (cate in headData.cates) {
if (cate.cateId == initCategory) {
......@@ -413,7 +417,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
initCategory = 0
initCategory = "0"
} else {
allFilter.categories.clear()
allFilter.categories.add(headData?.cates?.get(0) ?: CateItem())
......@@ -483,7 +487,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
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) {
if (allFilter.categories.size == 1 && allFilter.categories[0].cateId == "0") {
allFilter.categories.clear()
}
allFilter.categories.add(bean)
......@@ -958,6 +962,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
tempFilter.ages.addAll(allFilter.ages)
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
......@@ -966,7 +973,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if (headData?.filters != null) {
val filterPopupWindow = FilterPopupWindow(mContext, headData?.filters!!, tempFilter)
filterPopupWindow.setOnDismissListener {
// viewDim.visibility = View.INVISIBLE
viewDim.visibility = View.INVISIBLE
viewDim_filter.visibility = View.GONE
if (allFilter.others.size + allFilter.enquiries.size + allFilter.ages.size + allFilter.title.size > 0 || !TextUtils.isEmpty(
allFilter.priceRanges?.minPrice
......@@ -979,12 +986,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
showConsultAssistantDialog()
}
filterPopupWindow.isClippingEnabled = false
filterPopupWindow.showAtLocation(viewSep2.rootView, Gravity.TOP + Gravity.RIGHT, 0, 0)
filterPopupWindow.showAsDropDown(viewSep2)
hideConsultAssistantDialog()
filterPopupWindow.onFilterConfirmListener = this
updateFilterTextViewStatus(tvFilter, FILTER_STATUS_OPEN)
// viewDim.visibility = View.VISIBLE
viewDim_filter.visibility = View.VISIBLE
viewDim.visibility = View.VISIBLE
} else {
ToastUtil.toastShort("数据初始化失败,请重试")
getPresenter().fetchListHead()
......@@ -995,15 +1001,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
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(
"filter: " + tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }
.joinToString(
","
) + "," + tempFilter.ages.map { it.value }
.joinToString(",") + "," + tempFilter.others.map { it.value }.joinToString(
","
)
)
props1.put(
"filtrate_second",
tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }.joinToString(",") + "," + tempFilter.ages.map { it.value }.joinToString(
tempFilter.showType.value + "," + tempFilter.enquiries.map { it.value }
.joinToString(",") + "," + tempFilter.ages.map { it.value }.joinToString(
","
) + "," + tempFilter.others.map { it.value }.joinToString(",")
)
......@@ -1015,6 +1024,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
allFilter.enquiries.addAll(tempFilter.enquiries)
allFilter.ages.clear()
allFilter.ages.addAll(tempFilter.ages)
// 擅长人群
allFilter.specialityCrowd.clear()
allFilter.specialityCrowd.addAll(tempFilter.specialityCrowd)
// 其它
allFilter.others.clear()
allFilter.others.addAll(tempFilter.others)
allFilter.title.clear()
......@@ -1350,7 +1363,6 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//如果是亲自教育类别----->点击咨询顾问---会跳转到一个只是亲自教育的导医队列中
//判断主题选中,判断热门筛选中是否也有该主题
Executors.newCachedThreadPool().execute {
if (headData!!.highlighter.size > 0) {
......@@ -1483,7 +1495,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
FILTER_STATUS_OPEN -> {
tv.typeface = Typeface.DEFAULT_BOLD
tv.setTextColor(ContextCompat.getColor(mContext, R.color.platform_colorTextDefault))
tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.platform_arrow_drop_down_en, 0)
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_arrow_drop_down_en,
0
)
}
}
}
......
......@@ -11,7 +11,6 @@ import com.ydl.ydlcommon.utils.RxLifecycleUtils
import com.ydl.ydlcommon.utils.YDLAsyncUtils
import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils
import com.yidianling.common.tools.LogUtil
import com.yidianling.consultant.http.ExpertSearchDataManager
import com.yidianling.consultant.model.SearchApi
import com.yidianling.consultant.model.bean.AllFilter
......@@ -29,8 +28,8 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
@SuppressLint("CheckResult")
fun fetchListHead() {
SearchApi.getSearchApi()
.searchConditions()
.compose(RxLifecycleUtils.bindToLifecycle(mView!!))//使用 Rxlifecycle,使 Disposable 和 Activity 一起销毁
.searchConditions(2)
.compose(RxLifecycleUtils.bindToLifecycle(mView))//使用 Rxlifecycle,使 Disposable 和 Activity 一起销毁
.compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
......@@ -106,7 +105,7 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
@SuppressLint("CheckResult")
fun fetchListData(allFilter: AllFilter, page: Int) {
//是否亲子教育字段
ConsultAssistantDialogUtils.REALATION_EDUCATION = allFilter.categories.size==1&&allFilter.categories[0].cateId==23
ConsultAssistantDialogUtils.REALATION_EDUCATION = allFilter.categories.size==1&&allFilter.categories[0].cateId=="23"
var showType = 0
val sb = StringBuffer()
......@@ -133,6 +132,10 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
if (allFilter.ages.isNotEmpty()) {
sb.append("&ages=").append(allFilter.ages.map { it.key }.joinToString(","))
}
// 擅长人群拼接
if (allFilter.specialityCrowd.isNotEmpty()){
sb.append("&crowdsTags=").append(allFilter.specialityCrowd.map { it.key }.joinToString(","))
}
if (allFilter.others.isNotEmpty()) {
sb.append("&others=").append(allFilter.others.map { it.key }.joinToString(","))
}
......@@ -149,18 +152,18 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
}
sb.append("&page=").append(page)
ExpertSearchDataManager.getHttp().searchDoctor(sb.toString())
.compose(RxLifecycleUtils.bindToLifecycle(mView!!))
.compose(RxLifecycleUtils.bindToLifecycle(mView))
.compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer {
if (null != it.list && !it.list!!.isEmpty()) {
if (null != it.list && it.list.isNotEmpty()) {
// if (showType == 0) {
// mView.onDoctorListFetched(it.list!!, page, it.pages)
// } else {
// mView.onServiceListFetched(it.list!!, page, it.pages)
// }
mView.onDoctorListFetched(it.list!!, page, it.pages)
mView.onDoctorListFetched(it.list, page, it.pages)
//更新缓存 只更新第一页的缓存
if (page == 1){
updateCache(showType,it)
......
......@@ -13,6 +13,7 @@ class ConsultBIConstants {
const val POSITION_AVERAGE_SERVICE_INPUT = "average_service_input" //服务均价
const val POSITION_AGE_CHOICE_CLICK = "age_choice_click" //年龄选择
const val POSITION_QUALIFICATION_CHOICE_CLICK = "qualification_choice_click" //资质选择
const val POSITION_GOOD_AT_CLICK = "good_at_click" // 擅长人群
const val POSITION_OTHER_CHOICE_CLICK = "other_choice_click" //其他选择
const val POSITION_CONSULT_FILTER_RESET_CLICK = "consult_filter_reset_click" //重置
const val POSITION_CONSULT_FILTER_CHECKOUT_CLICK = "consult_filter_checkoutallconsultants_click" //查看XXX位咨询师
......
......@@ -13,7 +13,6 @@ import com.yidianling.consultant.model.bean.ExpertSearchBean
import com.yidianling.consultant.model.bean.HeadData
import io.reactivex.Observable
import retrofit2.http.*
import kotlin.reflect.jvm.internal.impl.load.kotlin.JvmType
/**
......@@ -41,7 +40,7 @@ interface SearchApi {
//搜索条件
@GET("consult/search/conditions")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
fun searchConditions(): Observable<BaseAPIResponse<HeadData>>
fun searchConditions(@Query("cateSource") cateSource: Int): Observable<BaseAPIResponse<HeadData>>
//专家服务搜索
@retrofit2.http.Headers("Content-Type:application/json")
......
......@@ -21,5 +21,6 @@ data class AllFilter(
val ages: ArrayList<AgeItem> = ArrayList(), //年龄
val others: ArrayList<OtherItem> = ArrayList(),//其他筛选
val title:ArrayList<ReorderItem> = ArrayList()//资质
val title:ArrayList<ReorderItem> = ArrayList(), //资质
val specialityCrowd:ArrayList<SpecialityCrowdBean> = ArrayList() // 擅长人群
)
\ No newline at end of file
......@@ -6,29 +6,34 @@ import com.google.gson.annotations.SerializedName
data class CateItem(
@field:SerializedName("cate_name")
var cateName: String? = null,
@field:SerializedName("cate_name")
var cateName: String? = null,
@field:SerializedName("cate_id")
var cateId: Int? = null
@field:SerializedName("cate_id")
var cateId: String? = null
) : Parcelable {
constructor(source: Parcel) : this(
source.readString(),
source.readValue(Int::class.java.classLoader) as Int?
)
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString()
) {
}
override fun describeContents() = 0
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(cateName)
parcel.writeString(cateId)
}
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
writeString(cateName)
writeValue(cateId)
override fun describeContents(): Int {
return 0
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<CateItem> = object : Parcelable.Creator<CateItem> {
override fun createFromParcel(source: Parcel): CateItem = CateItem(source)
override fun newArray(size: Int): Array<CateItem?> = arrayOfNulls(size)
companion object CREATOR : Parcelable.Creator<CateItem> {
override fun createFromParcel(parcel: Parcel): CateItem {
return CateItem(parcel)
}
override fun newArray(size: Int): Array<CateItem?> {
return arrayOfNulls(size)
}
}
}
\ No newline at end of file
......@@ -3,39 +3,52 @@ package com.yidianling.consultant.model.bean
import com.google.gson.annotations.SerializedName
data class Filters(
/**
* 按服务或者按专家
*/
@field:SerializedName("show_type")
val showType: List<ShowTypeItem> = ArrayList(),
/**
* 其他选择
*/
@field:SerializedName("other")
val other: List<OtherItem> = ArrayList(),
/**
* 咨询方式
*/
@field:SerializedName("enquiry")
val enquiry: List<EnquiryItem> = ArrayList(),
/**
* 服务均价
*/
@field:SerializedName("priceRanges")
val priceRanges: List<PriceRangesItem> = ArrayList(),
/**
* 年龄选择
*/
@field:SerializedName("age")
val age: List<AgeItem> = ArrayList(),
/**
* 资质选择
*/
@field:SerializedName("title")
val title: List<ReorderItem> = ArrayList() //资质
/**
* 按服务或者按专家
*/
@field:SerializedName("show_type")
val showType: List<ShowTypeItem> = ArrayList(),
/**
* 其他选择
*/
@field:SerializedName("other")
val other: List<OtherItem> = ArrayList(),
/**
* 咨询方式
*/
@field:SerializedName("enquiry")
val enquiry: List<EnquiryItem> = ArrayList(),
/**
* 服务均价
*/
@field:SerializedName("priceRanges")
val priceRanges: List<PriceRangesItem> = ArrayList(),
/**
* 年龄选择
*/
@field:SerializedName("age")
val age: List<AgeItem> = ArrayList(),
/**
* 资质选择
*/
@field:SerializedName("title")
val title: List<ReorderItem> = ArrayList(),
// /**
// * 擅长人群
// */
// @field:SerializedName("crowdsTags")
// val crowdsTags: List<AgeItem> = ArrayList()
/**
* 擅长人群
*/
@field:SerializedName("specialityCrowd")
val specialityCrowd: ArrayList<SpecialityCrowdBean> = ArrayList()
)
\ No newline at end of file
......@@ -4,33 +4,33 @@ import com.google.gson.annotations.SerializedName
data class HeadData(
/**
* 主题
*/
@field:SerializedName("cates")
val cates: ArrayList<CateItem> = ArrayList(),
/**
* 主题
*/
@field:SerializedName("cates")
val cates: ArrayList<CateItem> = ArrayList(),
/**
* 排序
*/
@field:SerializedName("reorder")
val reorder: ArrayList<ReorderItem> = ArrayList(),
/**
* 排序
*/
@field:SerializedName("reorder")
val reorder: ArrayList<ReorderItem> = ArrayList(),
/**
* 筛选
*/
@field:SerializedName("filters")
val filters: Filters = Filters(),
/**
* 筛选
*/
@field:SerializedName("filters")
val filters: Filters = Filters(),
/**
* 热门
*/
@field:SerializedName("highlighter")
val highlighter: ArrayList<HighlighterItem> = ArrayList(),
/**
* 热门
*/
@field:SerializedName("highlighter")
val highlighter: ArrayList<HighlighterItem> = ArrayList(),
/**
* 地区
*/
@field:SerializedName("region")
val region: ArrayList<RegionItem> = ArrayList()
/**
* 地区
*/
@field:SerializedName("region")
val region: ArrayList<RegionItem> = ArrayList()
)
\ No newline at end of file
package com.yidianling.consultant.model.bean
import com.google.gson.annotations.SerializedName
data class SpecialityCrowdBean(
@field:SerializedName("value")
var value: String? = null,
@field:SerializedName("key")
var key: String? = null
)
\ No newline at end of file
......@@ -36,7 +36,7 @@ class ConsultantServiceImp : IConsultantService {
override fun expertSearchIntent(
activity: Activity,
category: Int,
category: String,
showType: Int,
isInitShowHot: Boolean
): Intent {
......@@ -72,14 +72,14 @@ class ConsultantServiceImp : IConsultantService {
override fun startExpertSearchActivity(
mContext: Context,
category: Int,
category: String,
categoryName: String,
showType: Int
) {
ExpertSearchActivity.start(mContext, category, categoryName, showType)
}
override fun startExpertSearchActivity(mContext: Context, category: Int) {
override fun startExpertSearchActivity(mContext: Context, category: String) {
ExpertSearchActivity.start(mContext, category)
}
......
......@@ -9,10 +9,7 @@ import androidx.core.content.ContextCompat
import android.text.*
import android.text.style.AbsoluteSizeSpan
import android.util.Log
import android.view.Gravity
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import android.view.*
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.*
......@@ -42,8 +39,11 @@ import kotlinx.android.synthetic.main.consultant_ui_filter_popup.view.*
* 筛选弹窗
* Created by zqk on 17-9-15.
*/
class FilterPopupWindow(private val context: Context, private val filterData: Filters, private val tempFilter: AllFilter)
: PopupWindow(context) {
class FilterPopupWindow(
private val context: Context,
private val filterData: Filters,
private val tempFilter: AllFilter
) : PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) {
private val mDisposableList = CompositeDisposable()
......@@ -53,15 +53,18 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
private val ageViews: ArrayList<View> = ArrayList()
private val otherViews: ArrayList<View> = ArrayList()
private val ziZhiViews: ArrayList<View> = ArrayList()
private val goodAtViews: ArrayList<TextView> = ArrayList()
var onFilterConfirmListener: OnFilterConfirmListener? = null
/**筛选咨询方式一行数量*/
private val enquirySize = 4;
private var dp5 = 0
private var dp10 = 0
private var dp36 = 0
private var dp46 = 0
// val pad = RxImageTool.dp2px(15f)
private val popWidth = (RxDeviceTool.getScreenWidth(context) * 0.8).toInt()
private val popWidth = (RxDeviceTool.getScreenWidth(context))
var etMinPrice: EditText? = null
var etMaxPrice: EditText? = null
......@@ -74,25 +77,23 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
dp36 = RxImageTool.dip2px(36f)
dp46 = RxImageTool.dip2px(46f)
this.width = popWidth
this.height = RxDeviceTool.getAppHeight(context) + RxDeviceTool.getStatusBarHeight(context)
this.height = (RxDeviceTool.getAppHeight(context) * 0.75).toInt()
contentView = view
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
contentView.foregroundGravity = Gravity.RIGHT
}
this.isFocusable = true
@Suppress("DEPRECATION")
this.setBackgroundDrawable(BitmapDrawable())
this.isOutsideTouchable = true
this.animationStyle = R.style.consultant_expert_service_popupwindow_filter_anim_style
// this.animationStyle = R.style.consultant_expert_service_popupwindow_filter_anim_style
initShowTypeViews(view)
initEnquiryViews(view)
initPriceViews(view)
initAgeViews(view)
initOtherViews(view)
initGoodAtCrowd(view)
initZiZhiViews(view)
initKeyboardListener(view)
......@@ -136,6 +137,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
tempFilter.showType = filterData.showType[0]
tempFilter.ages.clear()
tempFilter.enquiries.clear()
// 擅长人群
tempFilter.specialityCrowd.clear()
tempFilter.others.clear()
tempFilter.title.clear()
tempFilter.priceRangesView = null
......@@ -162,6 +165,10 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
v.paint.isFakeBoldText = false
}
}
for (v in goodAtViews){
v.isSelected = false
v.paint.isFakeBoldText = false
}
for (v in otherViews) {
v.isSelected = false
if (v is TextView) {
......@@ -192,7 +199,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
val sb = StringBuffer()
var biEventParams = ""
sb.append("searchWord=").append(if (TextUtils.isEmpty(tempFilter.searchWord)) "" else tempFilter.searchWord)
sb.append("searchWord=")
.append(if (TextUtils.isEmpty(tempFilter.searchWord)) "" else tempFilter.searchWord)
if (tempFilter.categories.isNotEmpty()) {
var categorys = tempFilter.categories.map { it.cateId }.joinToString(",")
if ("0" == categorys) {
......@@ -221,6 +229,13 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
biEventParams = tempFilter.ages.map { it.key }.joinToString(",")
}
}
// 擅长人群拼接
if (tempFilter.specialityCrowd.isNotEmpty()){
sb.append("&crowdsTags=").append(tempFilter.specialityCrowd.map { it.key }.joinToString(","))
if (ConsultBIConstants.POSITION_GOOD_AT_CLICK==biEventName){
biEventParams = tempFilter.specialityCrowd.map { it.key }.joinToString(",")
}
}
if (tempFilter.others.isNotEmpty()) {
sb.append("&others=").append(tempFilter.others.map { it.key }.joinToString(","))
if (ConsultBIConstants.POSITION_OTHER_CHOICE_CLICK == biEventName) {
......@@ -259,34 +274,49 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
// sb.append("&page=").append(1)
ExpertSearchDataManager.getHttp().getFilterCount(sb.toString())
.subscribeOn(Schedulers.io())
.compose(RxUtils.resultJavaData())
.map { it }
.filter { it != null }
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
contentView.btnConfirm.text = if (it > 0) "确定" else "暂无匹配咨询师"
//按钮置灰/解除置灰
contentView.btnConfirm.isEnabled = it > 0
if (it > 0) {
contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.platform_but_text_color))
contentView.btnConfirm.background = ContextCompat.getDrawable(context, R.drawable.consultant_bg_radius_5_dark)
.subscribeOn(Schedulers.io())
.compose(RxUtils.resultJavaData())
.map { it }
.filter { it != null }
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
contentView.btnConfirm.text = if (it > 0) "确定" else "暂无匹配咨询师"
//按钮置灰/解除置灰
contentView.btnConfirm.isEnabled = it > 0
if (it > 0) {
contentView.btnConfirm.setTextColor(
ContextCompat.getColor(
context,
R.color.platform_but_text_color
)
)
contentView.btnConfirm.background =
ContextCompat.getDrawable(context, R.drawable.consultant_bg_radius_5_dark)
// contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.consultant_white))
} else {
contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.platform_text_light_color))
contentView.btnConfirm.background = ContextCompat.getDrawable(context, R.drawable.consultant_bg_radius_5_light)
} else {
contentView.btnConfirm.setTextColor(
ContextCompat.getColor(
context,
R.color.platform_text_light_color
)
)
contentView.btnConfirm.background =
ContextCompat.getDrawable(context, R.drawable.consultant_bg_radius_5_light)
// contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.color_999999))
}
}
}, {
ToastHelper.show(it.message!!)
})
}, {
ToastHelper.show(it.message!!)
})
}
private fun biEvent(biEventName: String, biEventParams: String = "") {
if (!TextUtils.isEmpty(biEventName)) {
ActionCountUtils.count(ConsultBIConstants.PART_ID_CONSULT_FILTER_PAGE+"|"+biEventName, biEventParams)
ActionCountUtils.count(
ConsultBIConstants.PART_ID_CONSULT_FILTER_PAGE + "|" + biEventName,
biEventParams
)
}
}
......@@ -295,20 +325,22 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private fun initOtherViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / 3
for ((index, other) in filterData!!.other!!.withIndex()) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
for ((index, other) in filterData.other.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, dp36)
val marginNum = dp5
params.setMargins(marginNum + (dp10 + mWidth) * (index % 3),
RxImageTool.dp2px(46f) * (index / 3),
marginNum,
0)
params.setMargins(
marginNum + (dp10 + mWidth) * (index % enquirySize),
RxImageTool.dp2px(46f) * (index / enquirySize),
marginNum,
0
)
textView.layoutParams = params
textView.text = other.value
otherViews.add(textView)
if (tempFilter!!.others!!.contains(other)) {
if (tempFilter.others.contains(other)) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -316,11 +348,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter!!.others!!.remove(other)
textView!!.isSelected = false
tempFilter.others.remove(other)
textView.isSelected = false
textView.paint.isFakeBoldText = false
} else {
tempFilter!!.others!!.add(other)
tempFilter.others.add(other)
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -332,26 +364,15 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
private fun initZiZhiViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(40f)) / 2
var float = 46f
for ((index, other) in filterData!!.title!!.withIndex()) {
for (other in filterData.title) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
// val params = FrameLayout.LayoutParams(mWidth,FrameLayout.LayoutParams.WRAP_CONTENT)
val params = FrameLayout.LayoutParams(mWidth, dp36)
val marginNum = dp5
// params.setMargins(marginNum + (dp10 + mWidth) * (index % 2),
// RxImageTool.dp2px(float) * (index / 2),
// marginNum,
// 0)
params.setMargins(0, 0, RxImageTool.dp2px(10f), 0)
textView.layoutParams = params
textView.text = other.value
if (textView.lineCount > 1) {
}
ziZhiViews.add(textView)
if (tempFilter!!.title!!.contains(other)) {
if (tempFilter.title.contains(other)) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -359,11 +380,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter!!.title!!.remove(other)
textView!!.isSelected = false
tempFilter.title.remove(other)
textView.isSelected = false
textView.paint.isFakeBoldText = false
} else {
tempFilter!!.title!!.add(other)
tempFilter.title.add(other)
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -373,21 +394,84 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
}
/**
* 擅长人群
*/
private fun initGoodAtCrowd(view: View) {
// 如果标标签数量大于20,取前20个默认展示
if (filterData.specialityCrowd.size > 20) {
view.ll_crowd_more.visibility = View.VISIBLE
view.ll_crowd_more.setOnClickListener {
val text = view.tv_crowd_open.text
if (text == "展开") {
view.tv_crowd_open.text = "收起"
view.iv_crowd_open.setBackgroundResource(R.drawable.ic_crowd_close)
for (i in 20 until goodAtViews.size){
goodAtViews[i].visibility = View.GONE
}
} else {
view.tv_crowd_open.text = "展开"
view.iv_crowd_open.setBackgroundResource(R.drawable.ic_crowd_open)
for (i in 20 until goodAtViews.size){
goodAtViews[i].visibility = View.VISIBLE
}
}
}
}
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(36f))
val margin = RxImageTool.dp2px(9.5f)
filterData.specialityCrowd.forEachIndexed { index, item ->
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
params.setMargins(0, 0, margin, 0)
textView.layoutParams = params
textView.text = item.value
if (tempFilter.specialityCrowd.contains(item)) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
textView.tvFilterName.text = " " + item.value + " "
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter.specialityCrowd.remove(item)
textView.isSelected = false
textView.paint.isFakeBoldText = false
} else {
tempFilter.specialityCrowd.add(item)
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
updateCount(ConsultBIConstants.POSITION_GOOD_AT_CLICK)
}
if (index>19){
textView.visibility = View.GONE
}
goodAtViews.add(textView)
view.fl_crowd.addView(textView)
}
}
private fun initAgeViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / 3
for ((index, age) in filterData!!.age!!.withIndex()) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
for ((index, age) in filterData.age.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(36f))
val marginNum = RxImageTool.dp2px(5f)
params.setMargins(marginNum + (dp10 + mWidth) * (index % 3),
dp46 * (index / 3),
marginNum,
0)
params.setMargins(
marginNum + (dp10 + mWidth) * (index % enquirySize),
dp46 * (index / enquirySize),
marginNum,
0
)
textView.layoutParams = params
textView.text = age.value
ageViews.add(textView)
if (tempFilter!!.ages!!.contains(age)) {
if (tempFilter.ages.contains(age)) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -395,11 +479,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter!!.ages!!.remove(age)
tempFilter.ages.remove(age)
textView.isSelected = false
textView.paint.isFakeBoldText = false
} else {
tempFilter!!.ages!!.add(age)
tempFilter.ages.add(age)
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -410,31 +494,33 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private fun initEnquiryViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / 3
for ((index, enquiry) in filterData!!.enquiry!!.withIndex()) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
for ((index, enquiry) in filterData.enquiry.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(36f))
val marginNum = RxImageTool.dp2px(5f)
params.setMargins(marginNum + (RxImageTool.dp2px(10f) + mWidth) * (index % 3),
RxImageTool.dp2px(46f) * (index / 3),
marginNum,
0)
params.setMargins(
marginNum + (RxImageTool.dp2px(10f) + mWidth) * (index % enquirySize),
RxImageTool.dp2px(46f) * (index / enquirySize),
marginNum,
0
)
textView.layoutParams = params
textView.text = enquiry.value
enquiryViews.add(textView)
if (tempFilter!!.enquiries!!.contains(enquiry)) {
if (tempFilter.enquiries.contains(enquiry)) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter!!.enquiries!!.remove(enquiry)
tempFilter.enquiries.remove(enquiry)
textView.isSelected = false
textView.paint.isFakeBoldText = false
} else {
tempFilter!!.enquiries!!.add(enquiry)
tempFilter.enquiries.add(enquiry)
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -445,20 +531,22 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private fun initPriceViews(view: View) {
val priceRange = View.inflate(context, R.layout.consultant_item_price_range, null) as LinearLayout
etMinPrice = priceRange.findViewById<EditText>(R.id.etMinPrice);
etMaxPrice = priceRange.findViewById<EditText>(R.id.etMaxPrice);
val priceRange =
View.inflate(context, R.layout.consultant_item_price_range, null) as LinearLayout
etMinPrice = priceRange.findViewById(R.id.etMinPrice);
etMaxPrice = priceRange.findViewById(R.id.etMaxPrice);
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
var listener: TextView.OnEditorActionListener = TextView.OnEditorActionListener { _, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE || event != null && event.keyCode == KeyEvent.KEYCODE_ENTER) {
updatePriceFilter()
true
} else {
false
var listener: TextView.OnEditorActionListener =
TextView.OnEditorActionListener { _, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE || event != null && event.keyCode == KeyEvent.KEYCODE_ENTER) {
updatePriceFilter()
true
} else {
false
}
}
}
if (tempFilter.priceRanges != null) {
etMinPrice?.setText(tempFilter.priceRanges?.minPrice)
......@@ -497,22 +585,35 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
})
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / 3
for ((index, priceRangesItem) in filterData!!.priceRanges!!.withIndex()) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
for ((index, priceRangesItem) in filterData.priceRanges.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(48f))
val marginNum = RxImageTool.dp2px(2f)
params.setMargins(marginNum + (RxImageTool.dp2px(10f) + mWidth) * (index % 3),
RxImageTool.dp2px(58f) * (index / 3),
marginNum,
0)
params.setMargins(
marginNum + (RxImageTool.dp2px(10f) + mWidth) * (index % enquirySize),
RxImageTool.dp2px(58f) * (index / 3),
marginNum,
0
)
textView.layoutParams = params
val maxPriceStr = if (TextUtils.isEmpty(priceRangesItem.maxPrice)) "+" else "-" + priceRangesItem.maxPrice
val contentStr = String.format("%s%s\n%s", priceRangesItem.minPrice, maxPriceStr, priceRangesItem.recommendPercent)
val maxPriceStr =
if (TextUtils.isEmpty(priceRangesItem.maxPrice)) "+" else "-" + priceRangesItem.maxPrice
val contentStr = String.format(
"%s%s\n%s",
priceRangesItem.minPrice,
maxPriceStr,
priceRangesItem.recommendPercent
)
val msp = SpannableString(contentStr)
msp.setSpan(AbsoluteSizeSpan(10, true), contentStr.indexOf("\n"), contentStr.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
msp.setSpan(
AbsoluteSizeSpan(10, true),
contentStr.indexOf("\n"),
contentStr.length,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = msp;
......@@ -540,7 +641,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
etMaxPrice?.setText("")
etMinPrice?.setText("")
} else {
tempFilter.priceRanges = priceRangesItem.copy(priceRangesItem.minPrice, priceRangesItem.maxPrice)
tempFilter.priceRanges =
priceRangesItem.copy(priceRangesItem.minPrice, priceRangesItem.maxPrice)
textView.isSelected = true
textView.paint.isFakeBoldText = true
tempFilter.priceRangesView = textView
......@@ -583,15 +685,17 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
val marginNum = dp5
var textMarginLeft = marginNum + (dp10 + mWidth) * (index % 2)
Log.e("Tag", "----------left=$textMarginLeft")
params.setMargins(textMarginLeft,
0,
marginNum,
marginNum)
params.setMargins(
textMarginLeft,
0,
marginNum,
marginNum
)
textView.layoutParams = params
textView.text = showType.value
showTypeViews.add(textView)
if (showType == tempFilter!!.showType) {
if (showType == tempFilter.showType) {
textView.isSelected = true
textView.paint.isFakeBoldText = true
}
......@@ -604,7 +708,7 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
textView.isSelected = true
textView.paint.isFakeBoldText = true
tempFilter!!.showType = showType
tempFilter.showType = showType
}
updateCount()
}
......
......@@ -23,11 +23,11 @@ interface IConsultantService: IProvider {
fun resetConsultAssistantDialogStatus()
fun expertSearchIntent(activity: android.app.Activity, category: kotlin.Int, showType: kotlin.Int, isInitShowHot: kotlin.Boolean): android.content.Intent
fun expertSearchIntent(activity: android.app.Activity, category: String, showType: Int, isInitShowHot: kotlin.Boolean): android.content.Intent
fun startExpertSearchActivity(context: Context, category: Int, categoryName: String, showType: Int)
fun startExpertSearchActivity(context: Context, category: String, categoryName: String, showType: Int)
fun startExpertSearchActivity(mContext: Context, category: Int)
fun startExpertSearchActivity(mContext: Context, category: String)
fun getHotSearch(): kotlin.collections.MutableList<Keyworks>
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="@color/platform_white"
>
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/platform_white"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.yidianling.consultant.ui.view.DisInterceptNestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--筛选框-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--筛选框-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/platform_white"
android:orientation="horizontal">
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvSubject"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:textColor="@color/platform_color_242424"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_theme"/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvArea"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:textColor="@color/platform_color_242424"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_area"/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvSort"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:textColor="@color/platform_color_242424"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_sort"/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvFilter"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:textColor="@color/platform_color_242424"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_filter"/>
</LinearLayout>
<LinearLayout
android:id="@+id/lin_filter2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingBottom="10dp"
android:orientation="horizontal">
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="6dp"
android:background="@drawable/consult_fillter_bg"/>
android:background="@color/platform_white"
android:orientation="horizontal">
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvSubject"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_theme"
android:textColor="@color/platform_color_242424" />
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvArea"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_area"
android:textColor="@color/platform_color_242424" />
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvSort"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_sort"
android:textColor="@color/platform_color_242424" />
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id="@+id/tvFilter"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text="@string/platform_filter"
android:textColor="@color/platform_color_242424" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin_filter2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingBottom="10dp"></LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="6dp"
android:background="@drawable/consult_fillter_bg" />
</LinearLayout>
</com.yidianling.consultant.ui.view.DisInterceptNestedScrollView>
<RelativeLayout
......@@ -96,46 +94,43 @@
android:id="@+id/viewSep2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/transparent"
/>
android:background="@color/transparent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvExperts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/platform_white"
android:overScrollMode="never"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvExperts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/platform_white"
android:overScrollMode="never" />
<com.ydl.ydlcommon.ui.LogoLoadingView
android:id="@+id/v_loading"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_network_error"
android:layout_width="match_parent"
android:layout_height="400dp"
android:orientation="vertical"
android:background="@color/platform_white"
android:gravity="center_horizontal"
android:visibility="gone"
>
android:orientation="vertical"
android:visibility="gone">
<ImageView
android:id="@+id/iv_exception"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/consultant_img_netwrok_error"/>
android:src="@drawable/consultant_img_netwrok_error" />
<TextView
android:id="@+id/tv_reload_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/consultant_reload_hint"/>
android:text="@string/consultant_reload_hint" />
<TextView
android:id="@+id/tv_reload"
......@@ -148,7 +143,7 @@
android:paddingRight="@dimen/platform_dp_32"
android:paddingBottom="@dimen/platform_dp_8"
android:text="重新加载"
android:textColor="@color/platform_main_theme"/>
android:textColor="@color/platform_main_theme" />
</LinearLayout>
<ImageButton
......@@ -162,14 +157,13 @@
android:background="@color/platform_transparent"
android:padding="0dp"
android:src="@drawable/consultant_ico_totop"
android:visibility="gone"
/>
android:visibility="gone" />
<View
android:id="@+id/viewDim"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#40000000"
android:visibility="invisible"/>
android:visibility="invisible" />
</RelativeLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/platform_white"
android:orientation="vertical">
<ScrollView
android:id="@+id/sv_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/platform_white"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="11dp"
android:layout_marginTop="@dimen/platform_dp_20"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_20"
android:text="显示方式"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold"
android:visibility="gone" />
<FrameLayout
android:id="@+id/flShowType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:visibility="gone" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="咨询方式"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flEnquiryType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="服务均价"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flPriceRange"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="年龄选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flAge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="资质选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<cn.lankton.flowlayout.FlowLayout
android:id="@+id/flZhizi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingLeft="5dp"
app:lineSpacing="10dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="其他选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flOther"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginBottom="40dp" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:layout_marginTop="10dp"
android:background="@color/platform_white"
android:orientation="horizontal">
<TextView
android:id="@+id/btnReset"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_weight="1"
android:background="@drawable/consultant_bg_radius_gray_6"
android:gravity="center"
android:text="@string/platform_reset"
android:textColor="@color/platform_color_999999"
android:textSize="16sp" />
<TextView
android:id="@+id/btnConfirm"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_weight="2"
android:background="@drawable/consultant_bg_radius_5_light"
android:gravity="center"
android:hint="暂无匹配咨询师"
android:textColorHint="@color/platform_color_E0E0E0"
android:textColor="@color/platform_but_text_color"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/platform_white"
android:orientation="vertical">
<ScrollView
android:id="@+id/sv_filter"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/platform_white"
android:overScrollMode="never"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_5"
android:layout_marginTop="@dimen/platform_dp_20"
android:text="显示方式"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold"
android:visibility="gone" />
<FrameLayout
android:id="@+id/flShowType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:visibility="gone" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="咨询方式"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flEnquiryType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="服务均价"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flPriceRange"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="年龄选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flAge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="资质选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<cn.lankton.flowlayout.FlowLayout
android:id="@+id/flZhizi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingLeft="5dp"
app:lineSpacing="10dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="擅长人群"
android:textColor="@color/platform_color_242424"
android:textSize="16sp"
android:textStyle="bold" />
<cn.lankton.flowlayout.FlowLayout
android:id="@+id/fl_crowd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingLeft="5dp"
app:lineSpacing="10dp" />
<LinearLayout
android:id="@+id/ll_crowd_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone"
tools:ignore="MissingConstraints"
tools:visibility="visible">
<TextView
android:id="@+id/tv_crowd_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="展开"
android:textSize="12sp"
android:textColor="@color/platform_color_666666"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/iv_crowd_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_crowd_open"
/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_28"
android:text="其他选择"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/flOther"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginBottom="40dp" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:background="@color/platform_white"
android:orientation="horizontal">
<TextView
android:id="@+id/btnReset"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_weight="1"
android:background="@drawable/consultant_bg_radius_gray_6"
android:gravity="center"
android:text="@string/platform_reset"
android:textColor="@color/platform_color_999999"
android:textSize="16sp" />
<TextView
android:id="@+id/btnConfirm"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:background="@drawable/consultant_bg_radius_5_light"
android:gravity="center"
android:hint="暂无匹配咨询师"
android:textColor="@color/platform_but_text_color"
android:textColorHint="@color/platform_color_E0E0E0"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
......@@ -78,7 +78,7 @@ object DynamicIn {
fun getUserInfo(): UserResponseBean.UserInfo? = getUserService().getUserInfo()
fun loginWayIntent(activity: Activity): Intent? {
fun loginWayIntent(activity: Activity): Intent {
return getUserService().loginWayIntent(activity)
}
......@@ -86,7 +86,7 @@ object DynamicIn {
getAppService().personalInfoIntent(activity)
}
fun inputPhoneIntent(activity: Activity, smsAction: String): Intent? {
fun inputPhoneIntent(activity: Activity, smsAction: String): Intent {
return getUserService().inputPhoneIntent(activity, smsAction)
}
......@@ -104,7 +104,7 @@ object DynamicIn {
showType: Int,
isInitShowHot: Boolean
): Intent? {
return getConsultService().expertSearchIntent(activity, category, showType, isInitShowHot)
return getConsultService().expertSearchIntent(activity, category.toString(), showType, isInitShowHot)
}
fun testResultH5(testResultId: Int) {
......@@ -115,11 +115,11 @@ object DynamicIn {
getTestsService().testDetailH5(testId.toString());
}
fun phoneCallIntent(activity: Activity): Intent? {
fun phoneCallIntent(activity: Activity): Intent {
return getConfideService().phoneCallIntent(activity)
}
fun fmDetailIntent(activity: Activity, fmId: Int): Intent? {
fun fmDetailIntent(activity: Activity, fmId: Int): Intent {
return getFMService().fmDetailIntent(activity, fmId)
}
......@@ -131,7 +131,7 @@ object DynamicIn {
getAppService().rechargeIntent(activity)
}
fun phoneCallFragment(head: String, callId: String): DialogFragment? {
fun phoneCallFragment(head: String, callId: String): DialogFragment {
return getConfideService().phoneCallFragment(head, callId)
}
......@@ -141,11 +141,11 @@ object DynamicIn {
}
fun isFmPlaying(): Boolean {
return getFMService().isPlaying() ?: false
return getFMService().isPlaying()
}
fun isCoursePlaying(): Boolean {
return getCourseService().isPlaying() ?: false
return getCourseService().isPlaying()
}
fun playCourse() {
......
......@@ -39,7 +39,7 @@ class HomeBaseHttp {
//首页头部 分类&Banner 请求
fun newHomeHeaderRequest(): Observable<BaseAPIResponse<HomeHeaderBean>> {
return getHomePagerApi().getHomeHeaderData()
return getHomePagerApi().getHomeHeaderData(2)
}
//首页倾述请求
......
......@@ -25,7 +25,7 @@ interface HomeBasePagerApi {
*/
@GET("home/index")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
fun getHomeHeaderData(): Observable<BaseAPIResponse<HomeHeaderBean>>
fun getHomeHeaderData(@Query("cateSource") cateSource: Int): Observable<BaseAPIResponse<HomeHeaderBean>>
/**
* 首页咨询请求
......
......@@ -287,7 +287,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
ll_chat_unusual_view.setListener(object : ChatUnusualView.ChatUnusualListener {
override fun onButtonClick() {
startActivity(
ImIn.getConsultService().expertSearchIntent(activity!!, 0, 0, false)
ImIn.getConsultService().expertSearchIntent(activity!!, "0", 0, false)
)
}
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment