From 6a5d8e915c7354aa58d6aabc98f54f88269d0cc4 Mon Sep 17 00:00:00 2001 From: juntao Date: Fri, 19 Mar 2021 09:33:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=9C=80=E6=B1=82=EF=BC=88=E6=9B=9D=E5=85=89?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=A1=A5=E5=85=85=EF=BC=89=20https://git.ghz?= =?UTF-8?q?s.com/pm/halo-app-issues/-/issues/1174?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gamecenter/gamedetail/desc/DescAdapter.kt | 32 +++++++++++++++++-- .../desc/GameRelatedVersionAdapter.kt | 11 +++++-- .../mygame/MyFollowedGameAdapter.kt | 24 ++++++++++++-- .../mygame/MyFollowedGameFragment.kt | 9 ++++-- .../gamecenter/mygame/MyPlayedGameFragment.kt | 6 +++- .../gamecenter/mygame/MyReservationAdapter.kt | 23 ++++++++++--- .../mygame/MyReservationFragment.kt | 21 ++++++++---- .../gh/gamecenter/mygame/PlayedGameAdapter.kt | 22 +++++++++++-- .../gamecenter/mygame/PlayedGameFragment.kt | 20 ++++++++++-- 9 files changed, 141 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt index 43ac461a94..461efa2bff 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt @@ -18,11 +18,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.gh.base.OnListClickListener import com.gh.common.constant.Constants +import com.gh.common.exposure.ExposureEvent +import com.gh.common.exposure.ExposureManager +import com.gh.common.exposure.ExposureSource import com.gh.common.util.* import com.gh.common.view.ExpandTextView import com.gh.common.view.GridSpacingItemColorDecoration import com.gh.common.view.divider.HorizontalDividerItemDecoration -import com.gh.common.view.divider.VerticalDividerItemDecoration import com.gh.gamecenter.GameNewsActivity import com.gh.gamecenter.R import com.gh.gamecenter.SuggestionActivity @@ -39,7 +41,6 @@ import com.gh.gamecenter.gamedetail.entity.DetailEntity import com.gh.gamecenter.gamedetail.entity.NewGameDetailEntity import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarActivity import com.gh.gamecenter.gamedetail.history.HistoryApkListActivity -import com.gh.gamecenter.home.amway.LeftPagerSnapHelper import com.gh.gamecenter.suggest.SuggestType import com.lightgame.adapter.BaseRecyclerAdapter import org.greenrobot.eventbus.EventBus @@ -259,10 +260,23 @@ class DescAdapter(context: Context, if (subjectEntity != null) { var subjectAdapter = viewHolder.binding.galleryRv.adapter if (subjectAdapter == null) { + + val exposureEventList = arrayListOf() + for ((index, game) in subjectEntity.data!!.take(4).withIndex()) { + game.sequence = index + val event = ExposureEvent.createEvent(gameEntity = game, source = listOf( + ExposureSource("游戏详情", gameName ?: ""), + ExposureSource("大家都在玩") + )) + exposureEventList.add(event) + ExposureManager.log(event) + } + viewHolder.binding.galleryRv.layoutManager = GridLayoutManager(mContext, 4) subjectAdapter = GameHorizontalAdapter(mContext, subjectEntity, true) subjectAdapter.gameName = gameName ?: "" subjectAdapter.entrance = mEntrance + subjectAdapter.exposureEventList = exposureEventList (viewHolder.binding.galleryRv.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false val dividerWidth = (DisplayUtils.getScreenWidth() - 20F.dip2px() * 2 - 64F.dip2px() * 4) / 3 @@ -327,6 +341,20 @@ class DescAdapter(context: Context, .size(DisplayUtils.dip2px(16f)) .color(ContextCompat.getColor(mContext, R.color.white)).build() addItemDecoration(itemDecoration) + + // 曝光相关 + relatedVersionAdapter.exposureEventList.clear() + + for ((index, simpleGame) in relatedVersion.withIndex()) { + val game = simpleGame.game?.toGameEntity() + game?.sequence = index + val event = ExposureEvent.createEvent(gameEntity = game, source = listOf( + ExposureSource("游戏详情", gameName ?: ""), + ExposureSource("相关游戏") + )) + relatedVersionAdapter.exposureEventList.add(event) + ExposureManager.log(event) + } } } viewHolder.binding.titleTv.text = "相关游戏" diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRelatedVersionAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRelatedVersionAdapter.kt index bcecba0a8c..38fe03a6a3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRelatedVersionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRelatedVersionAdapter.kt @@ -6,7 +6,11 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.RecyclerView -import com.gh.common.util.* +import com.gh.common.exposure.ExposureEvent +import com.gh.common.util.GameViewUtils +import com.gh.common.util.MtaHelper +import com.gh.common.util.StringUtils +import com.gh.common.util.safelyGetInRelease import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.databinding.ItemGameDetailRelatedVersionBinding @@ -15,6 +19,9 @@ import com.gh.gamecenter.entity.GameDetailEntity class GameRelatedVersionAdapter(val context: Context, val gameName: String, val datas: ArrayList, val mEntrance: String) : RecyclerView.Adapter() { var isExpand = false private val mShowItemCount: Int = 3 + + var exposureEventList: ArrayList = arrayListOf() + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return if (viewType == RELATED_VERSION_ITEM) { @@ -48,7 +55,7 @@ class GameRelatedVersionAdapter(val context: Context, val gameName: String, val holder.itemView.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "相关游戏版本", "${gameName}+${relatedVersion.gameName}") GameDetailActivity.startGameDetailActivity(context, relatedVersion.gameId, - StringUtils.buildString(mEntrance, "+(", "游戏详情", "[", relatedVersion.gameName, "]:相关游戏[", (position + 1).toString(), "])")) + StringUtils.buildString(mEntrance, "+(", "游戏详情", "[", relatedVersion.gameName, "]:相关游戏[", (position + 1).toString(), "])"), exposureEventList.safelyGetInRelease(position)) } } is MoreViewHolder -> { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt index 500f8bacb3..9d71124ccc 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt @@ -1,12 +1,19 @@ package com.gh.gamecenter.mygame import android.content.Context +import android.util.SparseArray import android.view.View import android.view.ViewGroup 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.exposure.ExposureEvent +import com.gh.common.exposure.ExposureSource +import com.gh.common.exposure.IExposable +import com.gh.common.util.DialogUtils +import com.gh.common.util.MtaHelper +import com.gh.common.util.addSelectableItemBackground +import com.gh.common.util.removeSelectableItemBackground import com.gh.common.view.DrawableView import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R @@ -17,9 +24,11 @@ import com.gh.gamecenter.databinding.ItemFollowedGameBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.gamedetail.GameDetailFragment -class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameViewModel) : ListAdapter(context) { +class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameViewModel) + : ListAdapter(context), IExposable { private val mEntrance = "(我的关注)" + private val mExposureEventSparseArray: SparseArray = SparseArray() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { @@ -61,11 +70,16 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView executePendingBindings() } + val exposureEvent = ExposureEvent.createEvent( + gameEntity, + listOf(ExposureSource("我的游戏", "关注"))) + mExposureEventSparseArray.append(position, exposureEvent) + itemView.setOnClickListener { MtaHelper.onEvent("我的光环", path, "点击其他位置") MtaHelper.onEvent("我的光环", newPath, "点击其他位置") MtaHelper.onEvent("我的光环_新", path, "点击其他位置") - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance) + GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance, exposureEvent) } } } @@ -86,6 +100,10 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView } } } + + override fun getEventByPosition(pos: Int): ExposureEvent = mExposureEventSparseArray.get(pos) + + override fun getEventListByPosition(pos: Int) = null } class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerView.ViewHolder(binding.root) { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt index 884eb44b65..320242b442 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt @@ -10,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView import butterknife.BindView import butterknife.OnClick import com.gh.base.OnRequestCallBackListener +import com.gh.common.exposure.ExposureListener import com.gh.common.util.goneIf import com.gh.common.util.ifLogin import com.gh.common.util.viewModelProvider @@ -45,6 +46,7 @@ class MyFollowedGameFragment : ListFragment private lateinit var mViewModel: MyFollowedGameViewModel private var mRecommendAdapter: MyConcernRecommendAdapter? = null + private var mExposureListener: ExposureListener? = null @BindView(R.id.reuse_tv_none_data) lateinit var noDataTv: TextView @@ -69,6 +71,7 @@ class MyFollowedGameFragment : ListFragment // 不需要分页 mListRv.clearOnScrollListeners() + mListRv.addOnScrollListener(mExposureListener!!) recommendRecyclerView.setHasFixedSize(true) recommendRecyclerView.layoutManager = GridLayoutManager(context, 4) @@ -134,8 +137,10 @@ class MyFollowedGameFragment : ListFragment } override fun provideListAdapter(): ListAdapter { - return mAdapter - ?: MyFollowedGameAdapter(requireContext(), mViewModel).apply { mAdapter = this } + return mAdapter ?: MyFollowedGameAdapter(requireContext(), mViewModel).apply { + mAdapter = this + mExposureListener = ExposureListener(this@MyFollowedGameFragment, this) + } } @OnClick(R.id.reuse_tv_none_data, R.id.concern_rl_title, R.id.concernManageRl) 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 62ba1b0819..ad0ed4e9f1 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt @@ -5,6 +5,7 @@ import android.os.Build import android.os.Bundle import com.gh.base.BaseActivity_TabLayout import com.gh.common.constant.Constants +import com.gh.common.exposure.ExposureListener import com.gh.common.runOnIoThread import com.gh.common.util.SPUtils import com.gh.common.util.UsageStatsHelper @@ -35,7 +36,10 @@ class MyPlayedGameFragment : PlayedGameFragment() { override fun provideListAdapter(): ListAdapter { return mAdapter - ?: PlayedGameAdapter(requireContext(), mViewModel, true).apply { mAdapter = this } + ?: PlayedGameAdapter(requireContext(), mViewModel, true).apply { + mAdapter = this + mExposureListener = ExposureListener(this@MyPlayedGameFragment, this) + } } override fun onChanged(ts: MutableList?) { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt index 6508cfd37e..213441449e 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt @@ -1,12 +1,14 @@ package com.gh.gamecenter.mygame import android.content.Context -import android.view.Gravity -import android.view.View +import android.util.SparseArray import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType +import com.gh.common.exposure.ExposureEvent +import com.gh.common.exposure.ExposureSource +import com.gh.common.exposure.IExposable import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R @@ -18,11 +20,13 @@ import com.gh.gamecenter.databinding.ItemFollowedGameBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.GameAndPosition -import java.util.ArrayList +import java.util.* -class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewModel) : ListAdapter(context) { +class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewModel) + : ListAdapter(context), IExposable { private val mEntrance = "(我的预约)" + private val mExposureEventSparseArray: SparseArray = SparseArray() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { @@ -59,13 +63,18 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo holder.initShortcut(gameEntity, mEntrance, path, newPath) holder.binding.executePendingBindings() + val exposureEvent = ExposureEvent.createEvent( + gameEntity, + listOf(ExposureSource("我的游戏", "预约"))) + mExposureEventSparseArray.append(position, exposureEvent) + DownloadItemUtils.updateItemWithReserveStatus(GameViewHolder(holder.binding.gameItemIncluded), gameEntity) holder.itemView.setOnClickListener { MtaHelper.onEvent("我的光环", path, "点击其他位置") MtaHelper.onEvent("我的光环", newPath, "点击其他位置") MtaHelper.onEvent("我的光环_新", path, "点击其他位置") - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance) + GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance, exposureEvent) } if ("appointment" == gameEntity.reserveStatus) { @@ -145,4 +154,8 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo }) } + override fun getEventByPosition(pos: Int): ExposureEvent = mExposureEventSparseArray.get(pos) + + override fun getEventListByPosition(pos: Int) = null + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt index b7d488b1ea..d644489089 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt @@ -1,11 +1,13 @@ package com.gh.gamecenter.mygame +import android.os.Bundle import android.text.TextUtils import android.view.View import android.widget.TextView import androidx.core.content.ContextCompat import butterknife.BindView import butterknife.OnClick +import com.gh.common.exposure.ExposureListener import com.gh.common.util.ifLogin import com.gh.common.util.viewModelProvider import com.gh.download.DownloadManager @@ -16,26 +18,25 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.eventbus.EBPackage import com.gh.gamecenter.eventbus.EBReuse -import com.gh.gamecenter.game.GameAndPosition import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.personal.PersonalFragment import com.lightgame.download.DataWatcher import com.lightgame.download.DownloadEntity import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import java.util.ArrayList class MyReservationFragment : ListFragment() { private var mAdapter: MyReservationAdapter? = null private lateinit var mViewModel: MyReservationViewModel + private var mExposureListener: ExposureListener? = null @BindView(R.id.reuse_tv_none_data) lateinit var noDataTv: TextView private val dataWatcher = object : DataWatcher() { override fun onDataChanged(downloadEntity: DownloadEntity) { - val data = mAdapter?.getGameEntityByPackage(downloadEntity.packageName)?: arrayListOf() + val data = mAdapter?.getGameEntityByPackage(downloadEntity.packageName) ?: arrayListOf() for (gameAndPosition in data) { if (gameAndPosition.entity != null && gameAndPosition.entity.name == downloadEntity.name) { val entryMap = gameAndPosition.entity.getEntryMap() @@ -46,6 +47,12 @@ class MyReservationFragment : ListFragment() } } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + mListRv.addOnScrollListener(mExposureListener!!) + } + override fun onStart() { super.onStart() if (TextUtils.isEmpty(UserManager.getInstance().userId)) { @@ -68,8 +75,10 @@ class MyReservationFragment : ListFragment() } override fun provideListAdapter(): ListAdapter { - return mAdapter - ?: MyReservationAdapter(requireContext(), mViewModel).apply { mAdapter = this } + return mAdapter ?: MyReservationAdapter(requireContext(), mViewModel).apply { + mAdapter = this + mExposureListener = ExposureListener(this@MyReservationFragment, this) + } } override fun provideListViewModel(): MyReservationViewModel { @@ -107,7 +116,7 @@ class MyReservationFragment : ListFragment() //下载被删除事件 @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(status: EBDownloadStatus) { - if ( "delete" == status.status) { + if ("delete" == status.status) { mAdapter?.notifyItemAndRemoveDownload(status) } } 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 adee92cbb1..c0ea6dbd8c 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt @@ -7,6 +7,7 @@ import android.text.Spanned import android.text.TextPaint import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan +import android.util.SparseArray import android.util.TypedValue import android.view.Gravity import android.view.LayoutInflater @@ -17,6 +18,9 @@ import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType +import com.gh.common.exposure.ExposureEvent +import com.gh.common.exposure.ExposureSource +import com.gh.common.exposure.IExposable import com.gh.common.util.* import com.gh.common.view.BugFixedPopupWindow import com.gh.common.view.DrawableView @@ -35,10 +39,11 @@ import com.lightgame.download.DownloadEntity open class PlayedGameAdapter(context: Context, private val mViewModel: PlayedGameViewModel, private val mIsMyPlayedGame: Boolean) - : ListAdapter(context) { + : ListAdapter(context), IExposable { private val mPositionAndPackageMap = HashMap() private val mEntrance = if (mIsMyPlayedGame) "我的玩过" else "玩过的游戏" + private val mExposureEventSparseArray: SparseArray = SparseArray() override fun setListData(updateData: MutableList?) { if (!updateData.isNullOrEmpty()) { @@ -110,13 +115,20 @@ open class PlayedGameAdapter(context: Context, holder.binding.gameItemIncluded.labelList.addView(runTimeView) + val exposureSourceKey = if (mIsMyPlayedGame) "我的游戏" else "玩过的游戏" + val exposureSourceValue = if (mIsMyPlayedGame) "玩过" else "" + val exposureEvent = ExposureEvent.createEvent( + gameEntity, + listOf(ExposureSource(exposureSourceKey, exposureSourceValue))) + mExposureEventSparseArray.append(position, exposureEvent) + DownloadItemUtils.setOnClickListener(mContext, holder.binding.gameItemIncluded.downloadBtn, gameEntity, position, this, "(${mEntrance})", - StringUtils.buildString(mEntrance, ":", gameEntity.name)) + StringUtils.buildString(mEntrance, ":", gameEntity.name), exposureEvent) DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding.gameItemIncluded), true, true) holder.binding.optionsContainer.goneIf(!mIsMyPlayedGame) @@ -125,7 +137,7 @@ open class PlayedGameAdapter(context: Context, } holder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(${mEntrance})") + GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(${mEntrance})", exposureEvent) } val downloadBtnText = holder.binding.gameItemIncluded.downloadBtn.text @@ -283,4 +295,8 @@ open class PlayedGameAdapter(context: Context, mPositionAndPackageMap.clear() } + override fun getEventByPosition(pos: Int): ExposureEvent = mExposureEventSparseArray.get(pos) + + override fun getEventListByPosition(pos: Int) = null + } \ 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 f26cdd5e47..96df1f5f60 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt @@ -1,7 +1,10 @@ package com.gh.gamecenter.mygame +import android.os.Bundle +import android.view.View import android.widget.TextView import butterknife.BindView +import com.gh.common.exposure.ExposureListener import com.gh.common.util.EntranceUtils import com.gh.common.util.viewModelProvider import com.gh.download.DownloadManager @@ -25,6 +28,8 @@ open class PlayedGameFragment : ListFragment() protected var mAdapter: PlayedGameAdapter? = null protected lateinit var mViewModel: PlayedGameViewModel + protected var mExposureListener: ExposureListener? = null + @BindView(R.id.reuse_tv_none_data) lateinit var noDataTv: TextView @@ -34,6 +39,12 @@ open class PlayedGameFragment : ListFragment() } } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + mListRv.addOnScrollListener(mExposureListener!!) + } + override fun onResume() { if (isEverPause && mAdapter != null) mAdapter?.notifyDataSetChanged() super.onResume() @@ -46,14 +57,17 @@ open class PlayedGameFragment : ListFragment() } override fun provideListViewModel(): PlayedGameViewModel { - val userId = arguments?.getString(EntranceUtils.KEY_USER_ID) ?: UserManager.getInstance().userId + val userId = arguments?.getString(EntranceUtils.KEY_USER_ID) + ?: UserManager.getInstance().userId mViewModel = viewModelProvider(PlayedGameViewModel.Factory(HaloApp.getInstance().application, userId)) return mViewModel } override fun provideListAdapter(): ListAdapter { - return mAdapter - ?: PlayedGameAdapter(requireContext(), mViewModel, false).apply { mAdapter = this } + return mAdapter ?: PlayedGameAdapter(requireContext(), mViewModel, false).apply { + mAdapter = this + mExposureListener = ExposureListener(this@PlayedGameFragment, this) + } } @Subscribe(threadMode = ThreadMode.MAIN) From 65464eed3dc07b780cf92ea92ac66d0e859dcb94 Mon Sep 17 00:00:00 2001 From: juntao Date: Fri, 19 Mar 2021 11:42:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E5=AE=89=E8=A3=85=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=80=BB=E6=98=AF=E5=BC=B9=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/constant/Config.java | 2 +- .../main/java/com/gh/download/server/BrowserInstallHelper.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index adb00d8f1c..f05a797a3a 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -306,7 +306,7 @@ public class Config { @Override public void onSuccess(NewSettingsEntity data) { mNewSettingsEntity = data; - SPUtils.setString(Constants.SP_NEW_SETTINGS, data.toString()); + SPUtils.setString(Constants.SP_NEW_SETTINGS, GsonUtils.toJson(data)); } }); } diff --git a/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt b/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt index 6f181f37f0..f0ee2c1e5b 100644 --- a/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt +++ b/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt @@ -75,7 +75,7 @@ object BrowserInstallHelper { if (SPUtils.getBoolean(Constants.SP_USE_BROWSER_TO_INSTALL)) { false } else { - !SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_USE_BROWSER_TO_INSTALL_HINT) + SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_USE_BROWSER_TO_INSTALL_HINT, true) } } else { false From f748fcbd48af5d8a08e7584a12f6db99c7cf314a Mon Sep 17 00:00:00 2001 From: lyr <15622190878@163.com> Date: Fri, 19 Mar 2021 15:11:25 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV4.7.0-?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E4=BD=93=E7=B3=BB=EF=BC=88=E7=AC=AC2?= =?UTF-8?q?=E6=9C=9F=EF=BC=89--=E9=82=80=E8=AF=B7=E5=A5=BD=E5=8F=8B=20(031?= =?UTF-8?q?8=20=E4=BA=A7=E5=93=81=E9=AA=8C=E6=94=B6=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E7=AC=AC3=E7=82=B9)=20https://git.ghzs.com/pm/halo-app-issues/?= =?UTF-8?q?-/issues/1114?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/util/DirectUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 9c0e655241..1be5d2c161 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -1271,7 +1271,7 @@ object DirectUtils { } else { Constants.INVITE_FRIENDS_ADDRESS } - directToFullScreenWebPage(context, url, false) + directToFullScreenWebPage(context, url, true) } /**