修改游戏库刷新替换规则

This commit is contained in:
kehaoyuan@ghzhushou.com
2020-02-27 13:56:53 +08:00
parent 4e410e3ea3
commit f916c7b8a5

View File

@ -223,7 +223,14 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt
// 添加原始列表数据
for (subject in subjects) {
if (subject.id == entity.columnId) {
subject.data?.let { mSubjectRefreshMap[subject.id] = ArrayList(it) }
subject.data?.let {
val originalList = ArrayList(it)
if (originalList.isNotEmpty() && !originalList[0].image.isNullOrEmpty()) {
originalList.removeAt(0) // 把游戏大图移出刷新内容
}
mSubjectRefreshMap[subject.id] = originalList
}
break
}
}
@ -257,10 +264,16 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt
private fun replaceHorizontalSubjectRefreshData(horizontalColumn: SubjectEntity): Boolean {
val originalData = horizontalColumn.data ?: return false
val refreshList = mSubjectRefreshMap[horizontalColumn.id] ?: return false
// 注意:专题大图也在当前列表,替换时需要保留
val originalImageData = if (originalData.isNotEmpty() && !originalData[0].image.isNullOrEmpty()) {
originalData[0]
} else null
if (originalData.size == refreshList.size) return false
val lastGameId = originalData[originalData.size - 1].id
val replaceList: MutableList<GameEntity> = ArrayList()
if (originalImageData != null) replaceList.add(originalImageData)
// 在断点处开始取数据
var beginFetchData = false
@ -270,8 +283,10 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt
if (replaceList.size >= originalData.size) break
}
// 数据不足,按顺序补充
// 数据不足,按顺序重新获取
if (originalData.size > replaceList.size) {
replaceList.clear()
if (originalImageData != null) replaceList.add(originalImageData)
for (refreshData in refreshList) {
replaceList.add(refreshData)
if (replaceList.size >= originalData.size) break
@ -280,14 +295,20 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt
// 此时数据依然不足,数据处理出现错误
if (originalData.size > replaceList.size) {
debugOnly { throw IllegalStateException("error replacing subject refresh data") }
debugOnly {
throw IllegalStateException("error replacing subject refresh data ==> " +
" originalData size:" + originalData.size +
" replaceList size:" + replaceList.size)
}
return false
}
if (originalData.isNotEmpty() && !originalData[0].image.isNullOrEmpty()) {
replaceList.add(0, originalData[0])
replaceList.removeAt(replaceList.size - 1)
}
// 在此补充大图时原始数据和替换数据判断会有问题
// if (originalData.isNotEmpty() && !originalData[0].image.isNullOrEmpty()) {
// replaceList.add(0, originalData[0])
// replaceList.removeAt(replaceList.size - 1)
// }
horizontalColumn.data = replaceList
return true
}