diff --git a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt index bcbe93331e..1eb6582e0f 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt @@ -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 = 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 }