diff --git a/app/src/main/java/com/gh/common/view/DumbRefreshLayout.java b/app/src/main/java/com/gh/common/view/DumbRefreshLayout.java new file mode 100644 index 0000000000..cbcb5d8cc3 --- /dev/null +++ b/app/src/main/java/com/gh/common/view/DumbRefreshLayout.java @@ -0,0 +1,26 @@ +package com.gh.common.view; + +import android.content.Context; +import android.util.AttributeSet; + +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.constant.RefreshState; + +public class DumbRefreshLayout extends SmartRefreshLayout { + + public DumbRefreshLayout(Context context) { + super(context); + } + + public DumbRefreshLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DumbRefreshLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public boolean isRefreshing() { + return mState != RefreshState.None; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt index 1833467f15..dcc867967e 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt @@ -27,6 +27,7 @@ class CategoryDirectoryFragment : ListFragment { 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 ce9963fc17..535439a32c 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -380,11 +380,26 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: val subjectEntity = mItemDataList[position].horizontalColumn val exposureEventList = arrayListOf() - subjectEntity?.data?.let { - val maxDisplayCount = if (it.size < 4) it.size else 4 + val binding = holder.binding + var subjectAdapter = binding.horizontalRv.adapter + if (subjectAdapter == null) { + subjectAdapter = GameHorizontalAdapter(mContext, subjectEntity!!) + (binding.horizontalRv.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false + binding.horizontalRv.layoutManager = GridLayoutManager(mContext, 4) + binding.horizontalRv.adapter = subjectAdapter + } else { + (subjectAdapter as GameHorizontalAdapter).checkResetData(subjectEntity!!) + subjectAdapter.notifyItemRangeChanged(0, subjectAdapter.itemCount) + } + + subjectEntity.data?.let { val keyName = if (TextUtils.isEmpty(blockName)) "首页" else "板块" val keyValue = if (TextUtils.isEmpty(blockName)) "" else blockName - for (i in 0 until maxDisplayCount) { + + val positionOffset = subjectAdapter.index + + for (i in positionOffset until subjectAdapter.itemCount + positionOffset) { + it[i].sequence = i val event = ExposureEvent.createEvent(gameEntity = it[i], source = listOf(ExposureSource(keyName, keyValue), ExposureSource("专题", subjectEntity.name!!)), eTrace = null, @@ -392,18 +407,7 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: exposureEventList.add(event) } mItemDataList[position].exposureEventList = exposureEventList - } - - val binding = holder.binding - var subjectAdapter = binding.horizontalRv.adapter - if (subjectAdapter == null) { - subjectAdapter = GameHorizontalAdapter(mContext, subjectEntity!!, exposureEventList) - (binding.horizontalRv.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false - binding.horizontalRv.layoutManager = GridLayoutManager(mContext, 4) - binding.horizontalRv.adapter = subjectAdapter - } else { - (subjectAdapter as GameHorizontalAdapter).checkResetData(subjectEntity!!) - subjectAdapter.notifyItemRangeChanged(0, subjectAdapter.itemCount) + subjectAdapter.exposureEventList = exposureEventList } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt index 2e4cd77274..d409d84304 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt @@ -10,14 +10,15 @@ import com.gh.gamecenter.databinding.GameHorizontalItemBinding import com.gh.gamecenter.entity.SubjectEntity import com.lightgame.adapter.BaseRecyclerAdapter -class GameHorizontalAdapter(context: Context, subject: SubjectEntity, var exposureEventList: ArrayList) : BaseRecyclerAdapter(context) { +class GameHorizontalAdapter(context: Context, subject: SubjectEntity) : BaseRecyclerAdapter(context) { private var mSubjectEntity: SubjectEntity = subject - private var mIndex = 0 + var index = 0 + var exposureEventList: ArrayList? = null init { if (subject.data!!.isNotEmpty()) { - mIndex = if (subject.data!![0].image.isNullOrEmpty()) 0 else 1 + index = if (subject.data!![0].image.isNullOrEmpty()) 0 else 1 } } @@ -27,7 +28,7 @@ class GameHorizontalAdapter(context: Context, subject: SubjectEntity, var exposu } override fun getItemCount(): Int { - val size = mSubjectEntity.data!!.size - mIndex + val size = mSubjectEntity.data!!.size - index return when { size < 4 -> size size < 8 -> 4 @@ -36,12 +37,12 @@ class GameHorizontalAdapter(context: Context, subject: SubjectEntity, var exposu } override fun onBindViewHolder(holder: GameHorizontalItemViewHolder?, position: Int) { - val gameEntity = mSubjectEntity.data!![position + mIndex] + val gameEntity = mSubjectEntity.data!![position + index] holder?.binding?.game = gameEntity holder?.binding?.executePendingBindings() holder?.itemView?.setOnClickListener({ GameDetailActivity.startGameDetailActivity(mContext, gameEntity, - StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])"), exposureEventList[position]) + StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])"), exposureEventList!![position]) }) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java b/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java index 8283c87849..58e6caf650 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java @@ -168,6 +168,9 @@ public class AskFragment extends BaseFragment { sp.edit().putBoolean(SP_KEY_CLICKED_SELECT_GAME, mHasClickedSelectGame).apply(); } + if (mRecommendsFragment != null) { + mRecommendsFragment.hideRefreshHint(); + } DataUtils.onMtaEvent(getContext(), "问答页面", UserManager.getInstance().getCommunity().getName(), "选择游戏"); startActivityForResult(CommunitiesSelectActivity.getIntent(getContext()), COMMUNITIES_SELECT_REQUEST); break; diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java index 3f2b9bfe08..85acca9ceb 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java @@ -11,6 +11,7 @@ import android.view.View; import com.gh.common.util.AskLogUtils; import com.gh.common.util.CheckLoginUtils; +import com.gh.common.view.DumbRefreshLayout; import com.gh.common.view.SwipeRefreshHeader; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.R; @@ -23,7 +24,6 @@ import com.gh.gamecenter.qa.ask.QuestionEditActivity; import com.gh.gamecenter.qa.entity.AnswerEntity; import com.gh.gamecenter.qa.entity.Questions; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; -import com.scwang.smartrefresh.layout.api.RefreshLayout; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -44,7 +44,7 @@ public class AskQuestionsRecommendsFragment extends ListFragment refreshLayout.finishRefresh(), 200); + swipeRefreshHeader.postDelayed(() -> refreshLayout.finishRefresh(0), 200); } @Override @@ -149,7 +152,11 @@ public class AskQuestionsRecommendsFragment extends ListFragment refreshLayout.autoRefresh(0, 500, 1), delay); + } + + public void hideRefreshHint() { + refreshLayout.finishRefresh(0); } } diff --git a/app/src/main/res/layout/fragment_ask_questions_recommends.xml b/app/src/main/res/layout/fragment_ask_questions_recommends.xml index bc468e51a9..561418e47b 100644 --- a/app/src/main/res/layout/fragment_ask_questions_recommends.xml +++ b/app/src/main/res/layout/fragment_ask_questions_recommends.xml @@ -3,7 +3,7 @@ android:layout_width = "match_parent" android:layout_height = "match_parent"> - - +