修改游戏库刷新替换规则
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user