diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index 5188f2a655..a688f7ccb0 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -8,12 +8,6 @@ import android.text.TextUtils; import android.view.View; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.collection.ArrayMap; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; - import com.gh.common.constant.Config; import com.gh.common.dialog.DeviceRemindDialog; import com.gh.common.dialog.ReserveDialogFragment; @@ -39,6 +33,12 @@ import com.lightgame.utils.Utils; import java.util.concurrent.LinkedBlockingQueue; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.collection.ArrayMap; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * todo 下载判断不能以按钮文案为判断条件,否则按钮文案修改时又要修改判断逻辑 */ @@ -138,11 +138,16 @@ public class DownloadItemUtils { public static void updateItem(Context context, GameEntity gameEntity, GameViewHolder holder, boolean isShowPlatform) { - updateItem(context, gameEntity, holder, isShowPlatform, PluginLocation.only_game); + updateItem(context, gameEntity, holder, isShowPlatform, PluginLocation.only_game, false); } public static void updateItem(Context context, GameEntity gameEntity, GameViewHolder holder, - boolean isShowPlatform, PluginLocation pluginLocation) { + boolean isShowPlatform, boolean hideDownloadBtnIfNoAvailableContent) { + updateItem(context, gameEntity, holder, isShowPlatform, PluginLocation.only_game, hideDownloadBtnIfNoAvailableContent); + } + + public static void updateItem(Context context, GameEntity gameEntity, GameViewHolder holder, + boolean isShowPlatform, PluginLocation pluginLocation, boolean hideDownloadBtnIfNoAvailableContent) { // 控制是否显示下载按钮 if (!Config.isShowDownload(gameEntity.getId()) || context.getString(R.string.app_name).equals(gameEntity.getName())) { @@ -199,6 +204,9 @@ public class DownloadItemUtils { holder.gameDownloadBtn.setText("暂无"); holder.gameDownloadBtn.setTextColor(ContextCompat.getColor(context, R.color.button_gray)); holder.gameDownloadBtn.setBackgroundResource(R.drawable.news_detail_comment); + if (hideDownloadBtnIfNoAvailableContent) { + holder.gameDownloadBtn.setVisibility(View.GONE); + } } holder.gameDownloadBtn.setClickable(false); } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameAdapter.kt deleted file mode 100644 index 925e778d91..0000000000 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameAdapter.kt +++ /dev/null @@ -1,248 +0,0 @@ -package com.gh.gamecenter.mygame - -import android.content.Context -import android.os.Build -import android.text.SpannableStringBuilder -import android.text.Spanned -import android.text.TextPaint -import android.text.method.LinkMovementMethod -import android.text.style.ClickableSpan -import android.util.TypedValue -import android.view.Gravity -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.LinearLayout -import android.widget.TextView -import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.RecyclerView -import com.gh.common.constant.ItemViewType -import com.gh.common.util.* -import com.gh.common.view.BugFixedPopupWindow -import com.gh.common.view.DrawableView -import com.gh.gamecenter.GameDetailActivity -import com.gh.gamecenter.R -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder -import com.gh.gamecenter.adapter.viewholder.GameViewHolder -import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder -import com.gh.gamecenter.baselist.LoadType -import com.gh.gamecenter.databinding.ItemPlayedGameBinding -import com.gh.gamecenter.entity.GameEntity - -class MyPlayedGameAdapter(context: Context, private val mViewModel: PlayedGameViewModel) - : PlayedGameAdapter(context, mViewModel) { - - private val mPositionAndPackageMap = HashMap() - - override fun setListData(updateData: MutableList?) { - if (!updateData.isNullOrEmpty()) { - if (hasHeader()) { - if (updateData[0].id.isNotEmpty()) { - updateData.add(0, GameEntity()) // add head item - } - } else { - if (updateData[0].id.isEmpty()) { - updateData.remove(updateData[0]) // remove head item - } - } - } - - // 记录游戏位置 - if (updateData != null) { - for (i in 0 until updateData.size) { - val gameEntity = updateData[i] - - // 一些数据置换 - val apk = gameEntity.getApk() - if (apk.size > 0 && !apk[0].ghVersion.isNullOrEmpty()) { - gameEntity.brief = PlatformUtils.getInstance(mContext).getPlatformName(apk[0].getPlatform()) - } - - var packages = gameEntity.id - for (apkEntity in apk) { - packages += apkEntity.packageName - } - mPositionAndPackageMap[packages + i] = i - } - } - super.setListData(updateData) - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return when (viewType) { - ItemViewType.GAME_NORMAL -> { - MyPlayedGameViewHolder(ItemPlayedGameBinding.bind(mLayoutInflater.inflate(R.layout.item_played_game, parent, false))) - } - ItemViewType.ITEM_HEADER -> { - ReuseViewHolder(createHeaderView()) - } - else -> { - FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) - } - } - } - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - when (holder) { - is MyPlayedGameViewHolder -> { - val gameEntity = mEntityList[position] - - holder.initServerType(gameEntity) - holder.initDownloadButtonOffset() - holder.binding.gameItemIncluded.hideSize = true - holder.binding.gameItemIncluded.game = gameEntity - holder.binding.gameItemIncluded.subjectTag = "type" - holder.binding.executePendingBindings() - - - - holder.binding.gameItemIncluded.labelList.removeAllViews() - val runTimeView = TextView(mContext) - runTimeView.setSingleLine(true) - runTimeView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11f) - runTimeView.setTextColor(R.color.text_999999.toColor()) - runTimeView.text = ("游戏时长 " + NumberUtils.transSimpleUsageTime(gameEntity.playedTime)) - - holder.binding.gameItemIncluded.labelList.addView(runTimeView) - - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.gameItemIncluded.downloadBtn, - gameEntity, - position, - this, - "(我的玩过)", - StringUtils.buildString("我的玩过", ":", gameEntity.name)) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding.gameItemIncluded), true) - - holder.binding.optionsIv.setOnClickListener { - showRemoveWindow(holder) - } - - holder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(我的玩过)") - } - - val downloadBtnText = holder.binding.gameItemIncluded.downloadBtn.text - - holder.binding.uninstalledTv.visibleIf(downloadBtnText.contains("下载")) - - } - is FooterViewHolder -> { - holder.initItemPadding() - holder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver, R.string.ask_loadover_hint) - holder.itemView.setOnClickListener { - if (mIsNetworkError) { - mViewModel.load(LoadType.RETRY) - } - } - } - } - } - - private fun createHeaderView(): View { - val content = SpannableStringBuilder("游戏时长统计为关闭状态,点我去开启") - content.setSpan(object : ClickableSpan() { - override fun updateDrawState(ds: TextPaint) { - super.updateDrawState(ds) - ds.color = ContextCompat.getColor(mContext, R.color.theme_font) - ds.isUnderlineText = false - } - - override fun onClick(widget: View) { - DialogUtils.showUsageStatsDialog( - mContext, - { UsageStatsHelper.skipToUsageStats(mContext, UsageStatsHelper.USAGE_STATUS_REQUEST_CODE) }, - null) - } - }, content.length - 5, content.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - - val headView = TextView(mContext) - headView.gravity = Gravity.CENTER - headView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 40F.dip2px()) - headView.text = content - headView.setTextColor(R.color.title.toColor()) - headView.movementMethod = LinkMovementMethod() - return headView - } - - private fun hasHeader(): Boolean { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - !UsageStatsHelper.checkForPermission() - } else { - false - } - } - - private fun showRemoveWindow(holder: MyPlayedGameViewHolder) { - val view = holder.binding.root - val inflater = LayoutInflater.from(view.context) - val playedGameRemoveView = inflater.inflate(R.layout.layout_played_game_remove, null) - - val popupWindow = BugFixedPopupWindow( - playedGameRemoveView, - LinearLayout.LayoutParams.MATCH_PARENT, - view.height) - - playedGameRemoveView.findViewById(R.id.view_mask).setOnClickListener { - popupWindow.dismiss() - } - - playedGameRemoveView.findViewById(R.id.remove_container).setOnClickListener { - popupWindow.dismiss() - val adapterPosition = holder.adapterPosition - if (adapterPosition != RecyclerView.NO_POSITION) { - mViewModel.deletePlayedGame(mEntityList[adapterPosition]) - } - } - - popupWindow.isTouchable = true - popupWindow.isFocusable = true - popupWindow.isOutsideTouchable = true - popupWindow.showAsDropDown(view, 0, -view.height) - } - - override fun getItemViewType(position: Int): Int { - if (position == itemCount - 1) { - return ItemViewType.ITEM_FOOTER - } else if (mEntityList[0].id.isEmpty() && position == 0) { - return ItemViewType.ITEM_HEADER - } - return ItemViewType.GAME_NORMAL - } - - override fun getItemCount(): Int { - return if (mEntityList == null || mEntityList.isEmpty()) return 0 else mEntityList.size + 1 - } - - class MyPlayedGameViewHolder(var binding: ItemPlayedGameBinding) : RecyclerView.ViewHolder(binding.root) { - fun initServerType(gameEntity: GameEntity) { - val serverLabel = gameEntity.serverLabel - when { - gameEntity.test != null -> { - binding.gameItemIncluded.gameKaifuType.visibility = View.GONE - binding.gameItemIncluded.gameKaifuType.text = "" - } - serverLabel != null -> { - binding.gameItemIncluded.gameKaifuType.visibility = View.VISIBLE - binding.gameItemIncluded.gameKaifuType.text = serverLabel.value - binding.gameItemIncluded.gameKaifuType.background = DrawableView.getServerDrawable(serverLabel.color) - } - else -> binding.gameItemIncluded.gameKaifuType.visibility = View.GONE - } - - // 由于RecyclerView的复用机制 需要每次测量gameName的宽 - binding.gameItemIncluded.gameName.requestLayout() - } - - fun initDownloadButtonOffset() { - (binding.gameItemIncluded.downloadBtn.layoutParams as LinearLayout.LayoutParams).apply { - gravity = Gravity.BOTTOM - bottomMargin = DisplayUtils.dip2px(4F) - } - } - } - - fun resetListData() { - setListData(mEntityList) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt index 6a3c6f0aa2..9bdc1f6ee0 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt @@ -17,7 +17,7 @@ class MyPlayedGameFragment : PlayedGameFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == UsageStatsHelper.USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - if (mAdapter is MyPlayedGameAdapter) (mAdapter as MyPlayedGameAdapter).resetListData() + mAdapter?.resetListData() } } @@ -30,7 +30,7 @@ class MyPlayedGameFragment : PlayedGameFragment() { override fun provideListAdapter(): ListAdapter { return mAdapter - ?: MyPlayedGameAdapter(requireContext(), mViewModel).apply { mAdapter = this } + ?: PlayedGameAdapter(requireContext(), mViewModel, true).apply { mAdapter = this } } override fun onChanged(ts: MutableList?) { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt index 700cfbbf61..41ccf9f7a4 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt @@ -1,36 +1,71 @@ package com.gh.gamecenter.mygame import android.content.Context +import android.os.Build +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.TextPaint +import android.text.method.LinkMovementMethod +import android.text.style.ClickableSpan +import android.util.TypedValue +import android.view.Gravity +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType -import com.gh.common.util.DownloadItemUtils -import com.gh.common.util.StringUtils +import com.gh.common.util.* +import com.gh.common.view.BugFixedPopupWindow import com.gh.common.view.DrawableView import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.GameViewHolder +import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.LoadType -import com.gh.gamecenter.databinding.GameItemBinding +import com.gh.gamecenter.databinding.ItemPlayedGameBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.lightgame.download.DownloadEntity -open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGameViewModel) +open class PlayedGameAdapter(context: Context, + private val mViewModel: PlayedGameViewModel, + private val mIsMyPlayedGame: Boolean) : ListAdapter(context) { private val mPositionAndPackageMap = HashMap() + private val mEntrance = if (mIsMyPlayedGame) "我的玩过" else "玩过的游戏" override fun setListData(updateData: MutableList?) { + if (!updateData.isNullOrEmpty()) { + if (hasHeader()) { + if (updateData[0].id.isNotEmpty()) { + updateData.add(0, GameEntity()) // add head item + } + } else { + if (updateData[0].id.isEmpty()) { + updateData.remove(updateData[0]) // remove head item + } + } + } + // 记录游戏位置 if (updateData != null) { for (i in 0 until updateData.size) { val gameEntity = updateData[i] + + // 一些数据置换 + val apk = gameEntity.getApk() + if (apk.size > 0 && !apk[0].ghVersion.isNullOrEmpty()) { + gameEntity.brief = PlatformUtils.getInstance(mContext).getPlatformName(apk[0].getPlatform()) + } + var packages = gameEntity.id - for (apkEntity in gameEntity.getApk()) { + for (apkEntity in apk) { packages += apkEntity.packageName } mPositionAndPackageMap[packages + i] = i @@ -42,7 +77,10 @@ open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGam override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { ItemViewType.GAME_NORMAL -> { - PlayedGameViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) + MyPlayedGameViewHolder(ItemPlayedGameBinding.bind(mLayoutInflater.inflate(R.layout.item_played_game, parent, false))) + } + ItemViewType.ITEM_HEADER -> { + ReuseViewHolder(createHeaderView()) } else -> { FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) @@ -52,27 +90,48 @@ open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGam override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder) { - is PlayedGameViewHolder -> { + is MyPlayedGameViewHolder -> { val gameEntity = mEntityList[position] holder.initServerType(gameEntity) - holder.binding.game = gameEntity - holder.binding.hideSize = true - holder.binding.subjectTag = "type" + if (mIsMyPlayedGame) { + holder.initDownloadButtonOffset() + } + holder.binding.gameItemIncluded.hideSize = true + holder.binding.gameItemIncluded.game = gameEntity + holder.binding.gameItemIncluded.subjectTag = "type" holder.binding.executePendingBindings() + holder.binding.gameItemIncluded.labelList.removeAllViews() + val runTimeView = TextView(mContext) + runTimeView.setSingleLine(true) + runTimeView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11f) + runTimeView.setTextColor(R.color.text_666666.toColor()) + runTimeView.text = ("游戏时长 " + NumberUtils.transSimpleUsageTime(gameEntity.playedTime)) + + holder.binding.gameItemIncluded.labelList.addView(runTimeView) + DownloadItemUtils.setOnClickListener(mContext, - holder.binding.downloadBtn, + holder.binding.gameItemIncluded.downloadBtn, gameEntity, position, this, - "(玩过的游戏)", - StringUtils.buildString("玩过的游戏", ":", gameEntity.name)) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true) + "(${mEntrance})", + StringUtils.buildString(mEntrance, ":", gameEntity.name)) + DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding.gameItemIncluded), true, true) + + holder.binding.optionsContainer.goneIf(!mIsMyPlayedGame) + holder.binding.optionsIv.setOnClickListener { + showRemoveWindow(holder) + } holder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(玩过的游戏)") + GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(${mEntrance})") } + + val downloadBtnText = holder.binding.gameItemIncluded.downloadBtn.text + + holder.binding.uninstalledTv.visibleIf(downloadBtnText.contains("下载")) } is FooterViewHolder -> { holder.initItemPadding() @@ -82,13 +141,80 @@ open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGam mViewModel.load(LoadType.RETRY) } } + holder.hint.setTextColor(R.color.text_999999.toColor()) + holder.lineLeft.visibility = View.GONE + holder.lineRight.visibility = View.GONE } } } + private fun createHeaderView(): View { + val content = SpannableStringBuilder("游戏时长统计为关闭状态,点我去开启") + content.setSpan(object : ClickableSpan() { + override fun updateDrawState(ds: TextPaint) { + super.updateDrawState(ds) + ds.color = ContextCompat.getColor(mContext, R.color.theme_font) + ds.isUnderlineText = false + } + + override fun onClick(widget: View) { + DialogUtils.showUsageStatsDialog( + mContext, + { UsageStatsHelper.skipToUsageStats(mContext, UsageStatsHelper.USAGE_STATUS_REQUEST_CODE) }, + null) + } + }, content.length - 5, content.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + val headView = TextView(mContext) + headView.gravity = Gravity.CENTER + headView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 40F.dip2px()) + headView.text = content + headView.setTextColor(R.color.title.toColor()) + headView.movementMethod = LinkMovementMethod() + return headView + } + + private fun hasHeader(): Boolean { + return if (mIsMyPlayedGame && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { + !UsageStatsHelper.checkForPermission() + } else { + false + } + } + + private fun showRemoveWindow(holder: MyPlayedGameViewHolder) { + val view = holder.binding.root + val inflater = LayoutInflater.from(view.context) + val playedGameRemoveView = inflater.inflate(R.layout.layout_played_game_remove, null) + + val popupWindow = BugFixedPopupWindow( + playedGameRemoveView, + LinearLayout.LayoutParams.MATCH_PARENT, + view.height) + + playedGameRemoveView.findViewById(R.id.view_mask).setOnClickListener { + popupWindow.dismiss() + } + + playedGameRemoveView.findViewById(R.id.remove_container).setOnClickListener { + popupWindow.dismiss() + val adapterPosition = holder.adapterPosition + if (adapterPosition != RecyclerView.NO_POSITION) { + mViewModel.deletePlayedGame(mEntityList[adapterPosition]) + } + } + + popupWindow.isTouchable = true + popupWindow.isFocusable = true + popupWindow.isOutsideTouchable = true + popupWindow.showAsDropDown(view, 0, -view.height) + } + override fun getItemViewType(position: Int): Int { if (position == itemCount - 1) { return ItemViewType.ITEM_FOOTER + } else if (mEntityList[0].id.isEmpty() && position == 0) { + return ItemViewType.ITEM_HEADER } return ItemViewType.GAME_NORMAL } @@ -97,6 +223,38 @@ open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGam return if (mEntityList == null || mEntityList.isEmpty()) return 0 else mEntityList.size + 1 } + class MyPlayedGameViewHolder(var binding: ItemPlayedGameBinding) : RecyclerView.ViewHolder(binding.root) { + fun initServerType(gameEntity: GameEntity) { + val serverLabel = gameEntity.serverLabel + when { + gameEntity.test != null -> { + binding.gameItemIncluded.gameKaifuType.visibility = View.GONE + binding.gameItemIncluded.gameKaifuType.text = "" + } + serverLabel != null -> { + binding.gameItemIncluded.gameKaifuType.visibility = View.VISIBLE + binding.gameItemIncluded.gameKaifuType.text = serverLabel.value + binding.gameItemIncluded.gameKaifuType.background = DrawableView.getServerDrawable(serverLabel.color) + } + else -> binding.gameItemIncluded.gameKaifuType.visibility = View.GONE + } + + // 由于RecyclerView的复用机制 需要每次测量gameName的宽 + binding.gameItemIncluded.gameName.requestLayout() + } + + fun initDownloadButtonOffset() { + (binding.gameItemIncluded.downloadBtn.layoutParams as LinearLayout.LayoutParams).apply { + gravity = Gravity.BOTTOM + bottomMargin = DisplayUtils.dip2px(4F) + } + } + } + + fun resetListData() { + setListData(mEntityList) + } + fun notifyItemByDownload(download: DownloadEntity) { for (key in mPositionAndPackageMap.keys) { if (key.contains(download.packageName) && key.contains(download.gameId)) { @@ -125,24 +283,4 @@ open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGam mPositionAndPackageMap.clear() } - class PlayedGameViewHolder(var binding: GameItemBinding) : RecyclerView.ViewHolder(binding.root) { - fun initServerType(gameEntity: GameEntity) { - val serverLabel = gameEntity.serverLabel - when { - gameEntity.test != null -> { - binding.gameKaifuType.visibility = View.GONE - binding.gameKaifuType.text = "" - } - serverLabel != null -> { - binding.gameKaifuType.visibility = View.VISIBLE - binding.gameKaifuType.text = serverLabel.value - binding.gameKaifuType.background = DrawableView.getServerDrawable(serverLabel.color) - } - else -> binding.gameKaifuType.visibility = View.GONE - } - - // 由于RecyclerView的复用机制 需要每次测量gameName的宽 - binding.gameName.requestLayout() - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt index f6f348f8c6..f26cdd5e47 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt @@ -53,7 +53,7 @@ open class PlayedGameFragment : ListFragment() override fun provideListAdapter(): ListAdapter { return mAdapter - ?: PlayedGameAdapter(requireContext(), mViewModel).apply { mAdapter = this } + ?: PlayedGameAdapter(requireContext(), mViewModel, false).apply { mAdapter = this } } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/res/layout/item_played_game.xml b/app/src/main/res/layout/item_played_game.xml index 3950b96c06..3e47dcee6b 100644 --- a/app/src/main/res/layout/item_played_game.xml +++ b/app/src/main/res/layout/item_played_game.xml @@ -11,6 +11,7 @@ layout="@layout/game_item" />