Commit 59882ebd by 万齐军

feat: 倾诉首页修改

parent fd5ab45f
...@@ -6,7 +6,6 @@ import android.graphics.Color ...@@ -6,7 +6,6 @@ import android.graphics.Color
import android.os.Build import android.os.Build
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator import androidx.recyclerview.widget.SimpleItemAnimator
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
...@@ -36,16 +35,12 @@ import com.ydl.webview.NewH5Activity ...@@ -36,16 +35,12 @@ import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL import com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5 import com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.mvp.lce.BaseLceActivity import com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import com.ydl.ydlcommon.utils.BuryPointUtils import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.ydl.ydlcommon.view.DrawableRightTextView import com.ydl.ydlcommon.view.DrawableRightTextView
import com.ydl.ydlcommon.view.WrapContentLinearLayoutManager import com.ydl.ydlcommon.view.WrapContentLinearLayoutManager
import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.RxImageTool
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.im.api.service.IImService import com.yidianling.im.api.service.IImService
import kotlinx.android.synthetic.main.confide_home_activity.* import kotlinx.android.synthetic.main.confide_home_activity.*
import kotlinx.android.synthetic.main.confide_title_bar.* import kotlinx.android.synthetic.main.confide_title_bar.*
...@@ -140,6 +135,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -140,6 +135,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
//重置页 //重置页
page = 1 page = 1
allFiltersBean!!.page = page allFiltersBean!!.page = page
clearCacheData()
mPresenter.confideHomeRequest(true) mPresenter.confideHomeRequest(true)
recommendList(page) recommendList(page)
} }
...@@ -329,9 +325,8 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -329,9 +325,8 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
override fun confideHomeResponse(list: MutableList<ConfideHomeDataBean>) { override fun confideHomeResponse(list: MutableList<ConfideHomeDataBean>) {
initParam() initParam()
hideError() hideError()
updateCacheData(list) cacheList?.addAll(0, list)
updateAdapter() updateAdapter()
updateQuickConsultUrl()
setSuspendListener() setSuspendListener()
v_filterView.refreshView() v_filterView.refreshView()
} }
...@@ -350,18 +345,6 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -350,18 +345,6 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
/** /**
* 更新一键倾诉按钮url
*/
private fun updateQuickConsultUrl() {
//这边用try catch的原因是防止因为接口数据结构变化导致cacheList!![1].body!![1].linkUrl获取失败
quickConsultUrl = try {
cacheList!![1].body!![1].linkUrl
}catch (e: Exception) {
"https://h5.ydl.com/confideMatch"
}
}
/**
* 更新适配器数据 * 更新适配器数据
*/ */
private fun updateAdapter() { private fun updateAdapter() {
...@@ -391,34 +374,6 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -391,34 +374,6 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
/** /**
* 更新缓存数据
*/
private fun updateCacheData(list: List<ConfideHomeDataBean>) {
clearCacheData()
var soundBean: ConfideHomeDataBean? = null
for (index in 0 until list.size) {
//将听声寻人数据取出 最后加入
when {
//听声寻人
list[index].type == IConfideHomeConfig.TYPE_SOUND -> soundBean = list[index]
//为你推荐
list[index].type == IConfideHomeConfig.TYPE_RECOMMEND -> {
//如果为你推荐的数量大于等于10条 就认为有下一页
hasMore = null != list[index].body && list[index].body!!.size >= 10
list[index].recommendId = page
(cacheList as ArrayList).add(list[index])
}
//其他模块正常添加
else -> (cacheList as ArrayList).add(list[index])
}
}
//听声寻人 放在最后添加
if (null != soundBean) {
(cacheList as ArrayList).add(soundBean)
}
}
/**
* 根据筛选条件 更新为你推荐数据 * 根据筛选条件 更新为你推荐数据
*/ */
private fun updateCacheDataByRecommend(bean: ConfideHomeDataBean) { private fun updateCacheDataByRecommend(bean: ConfideHomeDataBean) {
......
...@@ -87,10 +87,6 @@ interface IConfideHomeContract{ ...@@ -87,10 +87,6 @@ interface IConfideHomeContract{
interface Presenter : IPresenter<View> { interface Presenter : IPresenter<View> {
/** /**
* 加载本地缓存
*/
fun loadLocalData(context: Context)
/**
* 倾诉首页数据请求 * 倾诉首页数据请求
*/ */
fun confideHomeRequest(isRefresh:Boolean = true) fun confideHomeRequest(isRefresh:Boolean = true)
......
package com.ydl.confide.home.presenter package com.ydl.confide.home.presenter
import android.content.Context
import android.text.TextUtils
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.ydl.confide.home.bean.ConfideHomeDataBean
import com.ydl.confide.home.contract.IConfideHomeContract import com.ydl.confide.home.contract.IConfideHomeContract
import com.ydl.confide.home.http.ConfideRecommendParam import com.ydl.confide.home.http.ConfideRecommendParam
import com.ydl.confide.home.model.ConfideHomeModelImpl import com.ydl.confide.home.model.ConfideHomeModelImpl
import com.ydl.confide.home.util.ConfideHomeUtils
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.mvp.base.BasePresenter import com.ydl.ydlcommon.mvp.base.BasePresenter
import com.ydl.ydlcommon.mvp.base.IView import com.ydl.ydlcommon.mvp.base.IView
import com.ydl.ydlcommon.utils.YDLAsyncUtils
import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.yidianling.common.tools.RxNetTool import com.yidianling.common.tools.RxNetTool
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
...@@ -26,127 +18,77 @@ import io.reactivex.functions.Consumer ...@@ -26,127 +18,77 @@ import io.reactivex.functions.Consumer
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/8/10 * @date 2018/8/10
*/ */
class ConfideHomePresenterImpl : BasePresenter<IConfideHomeContract.View,IConfideHomeContract.Model>(), IConfideHomeContract.Presenter{ class ConfideHomePresenterImpl : BasePresenter<IConfideHomeContract.View, IConfideHomeContract.Model>(),
IConfideHomeContract.Presenter {
override fun createModel(): IConfideHomeContract.Model { override fun createModel(): IConfideHomeContract.Model {
return ConfideHomeModelImpl() return ConfideHomeModelImpl()
} }
/** /**
* 加载本地缓存
*/
override fun loadLocalData(context: Context) {
YDLAsyncUtils.asyncAsResult(object : YDLAsyncUtils.AsyncObjecyerResult{
override fun doAsyncAction(): Any {
//读取缓存数据
var cacheData = YDLCacheUtils.getConfideHomeData()
if (cacheData.isEmpty()) {
cacheData = String(ConfideHomeUtils.getAssertsFile(context, "confide_home.json")!!)
}
return cacheData
}
override fun asyncResult(`object`: Any?) {
//如果没有缓存数据,显示加载框
if (`object` !is String || TextUtils.isEmpty(`object`)){
mView.showLoading()
}
if (`object` is String){
val gson = Gson()
val list = gson.fromJson<MutableList<ConfideHomeDataBean>>(`object`, object : TypeToken<MutableList<ConfideHomeDataBean>>() {
}.type)
if(null != list && !list.isEmpty()){
mView.confideHomeResponse(list)
}
}
confideHomeRequest(false)
}
})
}
/**
* 请求首页数据 * 请求首页数据
*/ */
override fun confideHomeRequest(isRefresh:Boolean) { override fun confideHomeRequest(isRefresh: Boolean) {
if (!RxNetTool.isConnected(mView.getContext())){ if (!RxNetTool.isConnected(mView.getContext())) {
mView.confideHomeRequestFail() mView.confideHomeRequestFail()
return return
} }
val disposable = mModel.confideHomeRequest() val disposable = mModel.confideHomeRequest()
.map { it } .map { it }
.filter { it != null } .filter { it != null }
.compose(RxUtils.applySchedulers(mView as IView)) .compose(RxUtils.applySchedulers(mView as IView))
.doFinally { mView.hideLoading() } .doFinally { mView.hideLoading() }
.subscribe(Consumer { .subscribe(Consumer {
mView.confideHomeResponse(it) mView.confideHomeResponse(it)
updateCache(it) }, object : ThrowableConsumer() {
}, object : ThrowableConsumer() { override fun accept(msg: String) {
override fun accept(msg: String) { mView.confideHomeRequestFail()
mView.confideHomeRequestFail() }
} })
})
}
/**
* 更新本地缓存
*/
private fun updateCache(list : MutableList<ConfideHomeDataBean>){
YDLAsyncUtils.async(object : YDLAsyncUtils.AsyncObjecyer{
override fun doAsyncAction() {
var gson = Gson()
var json = gson.toJson(list)
YDLCacheUtils.saveConfideHomeData(json)
}
})
} }
/** /**
* 为你推荐列表(筛选调用) * 为你推荐列表(筛选调用)
*/ */
override fun recommendList(param : ConfideRecommendParam) { override fun recommendList(param: ConfideRecommendParam) {
if (!RxNetTool.isConnected(mView.getContext())){ if (!RxNetTool.isConnected(mView.getContext())) {
mView.showError1("网络不给力") mView.showError1("网络不给力")
return return
} }
val disposable = mModel.recommendList(param) val disposable = mModel.recommendList(param)
.map { it } .map { it }
.filter { it != null } .filter { it != null }
.compose(RxUtils.applySchedulers(mView as IView)) .compose(RxUtils.applySchedulers(mView as IView))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer { .subscribe(Consumer {
mView.recommendListResponse(it) mView.recommendListResponse(it)
}, object : ThrowableConsumer() { }, object : ThrowableConsumer() {
override fun accept(msg: String) { override fun accept(msg: String) {
mView.showError1(msg) mView.showError1(msg)
} }
}) })
} }
/** /**
* 为你推荐列表(翻页时调用) * 为你推荐列表(翻页时调用)
*/ */
override fun recommendListMore(param: ConfideRecommendParam) { override fun recommendListMore(param: ConfideRecommendParam) {
if (!RxNetTool.isConnected(mView.getContext())){ if (!RxNetTool.isConnected(mView.getContext())) {
mView.showError1("网络不给力") mView.showError1("网络不给力")
return return
} }
val disposable = mModel.recommendList(param) val disposable = mModel.recommendList(param)
.map { it } .map { it }
.filter { it != null } .filter { it != null }
.compose(RxUtils.applySchedulers(mView as IView)) .compose(RxUtils.applySchedulers(mView as IView))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer { .subscribe(Consumer {
mView.recommendListMoreResponse(it) mView.recommendListMoreResponse(it)
}, object : ThrowableConsumer() { }, object : ThrowableConsumer() {
override fun accept(msg: String) { override fun accept(msg: String) {
mView.showError(msg) mView.showError(msg)
mView.showError1(msg) mView.showError1(msg)
} }
}) })
} }
} }
\ No newline at end of file
package com.ydl.confide.home.util package com.ydl.confide.home.util
import android.content.Context import android.content.Context
import androidx.core.content.ContextCompat
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.ImageView import android.widget.ImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.ydl.confide.R import com.ydl.confide.R
import com.ydl.confide.home.adapter.ConfideHomeAdapter import com.ydl.confide.home.adapter.ConfideHomeAdapter
import com.ydl.confide.home.bean.ConfideHomeAllFiltersBean import com.ydl.confide.home.bean.ConfideHomeAllFiltersBean
...@@ -84,32 +84,12 @@ class ConfideHomeUtils { ...@@ -84,32 +84,12 @@ class ConfideHomeUtils {
* 数据重组 * 数据重组
*/ */
fun resetData(list: MutableList<ConfideHomeDataBean>, filterView: ConfideHomeFilterView, listScrollListener: ConfideHomeRecycleViewListener) { fun resetData(list: MutableList<ConfideHomeDataBean>, filterView: ConfideHomeFilterView, listScrollListener: ConfideHomeRecycleViewListener) {
val recommendList: MutableList<ConfideHomeDataBean> = ArrayList() for ((index, dataBean) in list.withIndex()) {
var soundDataBean: ConfideHomeDataBean? = null
for ((index, dataBean) in list.withIndex().reversed()) {
//给隐藏的为你推荐筛选view赋值 //给隐藏的为你推荐筛选view赋值
if (dataBean.type == IConfideHomeConfig.TYPE_RECOMMEND_FILTER) { if (dataBean.type == IConfideHomeConfig.TYPE_RECOMMEND_FILTER) {
listScrollListener.setFilterIndex(index) listScrollListener.setFilterIndex(index)
filterView.initData(dataBean) filterView.initData(dataBean)
} }
//拆分为你推荐数据
if (dataBean.type == IConfideHomeConfig.TYPE_RECOMMEND) {
//如果是为你推荐数据 则进行筛分
recommendList.addAll(getRecommendList(dataBean))
//移除当前 为你推荐数据
list.removeAt(index)
}
//移除听声寻人数据 放在最后
if (dataBean.type == IConfideHomeConfig.TYPE_SOUND) {
soundDataBean = ConfideHomeDataBean(dataBean.type, dataBean.body, dataBean.head, dataBean.footer, dataBean.recommendId)
list.removeAt(index)
}
}
//添加 拆分后的 为你推荐数据
list.addAll(recommendList)
//添加 听声寻人 数据
if (null != soundDataBean) {
list.add(soundDataBean)
} }
} }
......
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