diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt index e91ee0a1f7..0bd42f8e07 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt @@ -325,6 +325,7 @@ open class GameFragment : LazyFragment() { mListAdapter.notifyChildItem(gameAndPosition.position, busFour.packageName) } } + (mViewModel as GameViewModel).refreshRecentVGameIfNeeded() } @Subscribe(threadMode = ThreadMode.MAIN) @@ -332,6 +333,7 @@ open class GameFragment : LazyFragment() { if (::mListAdapter.isInitialized && "Refresh" == reuse.type) { mListAdapter.notifyDataSetChanged() } + (mViewModel as GameViewModel).refreshRecentVGameIfNeeded() } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt index 1012c0a803..c0c321564c 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -87,6 +87,7 @@ import com.gh.gamecenter.home.video.ScrollCalculatorHelper import com.gh.gamecenter.qgame.QGameHorizontalSlideListViewHolder import com.gh.gamecenter.servers.gametest2.GameServerTestV2Activity import com.gh.gamecenter.subject.SubjectActivity +import com.gh.vspace.HomeRecentVGameAdapter import com.gh.vspace.HomeRecentVGameViewHolder import com.gh.vspace.VHelper import com.lightgame.adapter.BaseRecyclerAdapter @@ -1754,6 +1755,7 @@ class GameFragmentAdapter( || getItemViewType(gameAndPosition.position) == ItemViewType.HORIZONTAL_SLIDE_VIDEO || getItemViewType(gameAndPosition.position) == ItemViewType.GAME_COLLECTION_BIG_SLIDE || getItemViewType(gameAndPosition.position) == ItemViewType.GAME_COLLECTION_VERTICAL_REFRESH + || getItemViewType(gameAndPosition.position) == ItemViewType.RECENT_V_GAME ) { val view = mLayoutManager?.findViewByPosition(gameAndPosition.position) val recyclerView = view?.findViewById(R.id.recycler_view) @@ -1765,6 +1767,7 @@ class GameFragmentAdapter( is HomeHorizontalSlideVideoAdapter -> adapter.notifyItemByDownload(download) is HomeGameCollectionSlideAdapter -> adapter.notifyItemByDownload(download) is HomeGameCollectionRefreshAdapter -> adapter.notifyItemByDownload(download) + is HomeRecentVGameAdapter -> adapter.notifyItemByDownload(download) } } else { notifyItemChanged(gameAndPosition.position) @@ -1907,6 +1910,12 @@ class GameFragmentAdapter( continue } + val recentVGame = mItemDataList[position].recentVGame + if (recentVGame != null) { + positionList.add(GameAndPosition(null, position)) + continue + } + val image = mItemDataList[position].image if (image != null) positionList.add(GameAndPosition(image, position)) } diff --git a/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt b/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt index 6ec3c2cbe9..8f67e4371f 100644 --- a/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt +++ b/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt @@ -91,7 +91,11 @@ class HomeRecentVGameAdapter(context: Context) : DiffUtilAdapter( notifyDataSetChanged() } else { for (position in mDataList.indices) { - if (downloadEntity.name == mDataList[position].downloadEntity.name) { + val oldDownloadEntity = mDataList[position].downloadEntity + if (downloadEntity.name == oldDownloadEntity.name) { + // 防止覆盖游戏最后打开的时间为0 + if (VHelper.getLastPlayedTime(oldDownloadEntity) != 0L && VHelper.getLastPlayedTime(downloadEntity) == 0L) + return mDataList[position].downloadEntity = downloadEntity notifyItemChanged(position) } diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 62224f3664..26274e9bc3 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -1705,17 +1705,17 @@ object VHelper { val sortedEntityList = arrayListOf() val distinctIdSet = hashSetOf() - // 将下载任务的实体放进待排序列表里 - for (rawDownloadEntity in rawDownloadEntityList) { - distinctIdSet.add(rawDownloadEntity.gameId) - rawEntityList.add(rawDownloadEntity) - } // 将已安装任务的实体放进待排序列表里 for (rawInstalledEntity in rawInstalledEntityList) { - if (distinctIdSet.contains(rawInstalledEntity.downloadEntity.gameId)) { + distinctIdSet.add(rawInstalledEntity.downloadEntity.gameId) + rawEntityList.add(rawInstalledEntity.downloadEntity) + } + // 将下载任务的实体放进待排序列表里 + for (rawDownloadEntity in rawDownloadEntityList) { + if (distinctIdSet.contains(rawDownloadEntity.gameId)) { continue } - rawEntityList.add(rawInstalledEntity.downloadEntity) + rawEntityList.add(rawDownloadEntity) } distinctIdSet.clear() diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt index 8526a50c1c..811049a952 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt @@ -115,7 +115,7 @@ data class GameEntity( // 额外的下载方式,用于双下载类型时使用。可能的值为 "off/on/smooth/smooth_32",分别为关闭/畅玩64位/畅玩32位 @SerializedName("download_extra_status") - private var mDownloadStatusExtra: String = "", + private var mDownloadStatusExtra: String = "off", // 优先的下载方式,用于双下载类型时使用。可能的值为 "smooth/local",分别为 畅玩下载/普通下载 @SerializedName("download_default") private var mDefaultDownloadType: String = "",