From 810783da9cb0ba318b4870f1aa8e9202e861e3b8 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 29 Jun 2018 20:13:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=9B=9D=E5=85=89=E6=89=80=E9=80=A0=E6=88=90=E7=9A=84=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E6=A8=AA=E5=90=91=E6=8E=92=E5=B8=83=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E9=97=AA=E9=80=80=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/CategoryDirectoryFragment.kt | 1 + .../gh/gamecenter/game/GameFragmentAdapter.kt | 34 +++++++++++-------- .../game/horizontal/GameHorizontalAdapter.kt | 13 +++---- 3 files changed, 27 insertions(+), 21 deletions(-) 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]) }) } From 67f565bee0014e634167c2f0a2654e86d098b7ff Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 29 Jun 2018 23:07:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E5=8D=A1=E5=9C=A8"=E6=AD=A3=E5=9C=A8?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD"=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/view/DumbRefreshLayout.java | 26 ++++++++++++++++ .../com/gh/gamecenter/qa/AskFragment.java | 3 ++ .../AskQuestionsRecommendsFragment.java | 31 +++++++++++++------ .../fragment_ask_questions_recommends.xml | 4 +-- 4 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/gh/common/view/DumbRefreshLayout.java 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/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"> - - +