From f916c7b8a5f57aae348013cb3dcbee65f23b6ba9 Mon Sep 17 00:00:00 2001 From: "kehaoyuan@ghzhushou.com" Date: Thu, 27 Feb 2020 13:56:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B8=B8=E6=88=8F=E5=BA=93?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=9B=BF=E6=8D=A2=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/gamecenter/game/GameViewModel.kt | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) 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 }