Merge branch 'dev' of gitlab.ghzhushou.com:halo/assistant-android into dev
This commit is contained in:
26
app/src/main/java/com/gh/common/view/DumbRefreshLayout.java
Normal file
26
app/src/main/java/com/gh/common/view/DumbRefreshLayout.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
@ -27,6 +27,7 @@ class CategoryDirectoryFragment : ListFragment<CategoryEntity, CategoryDirectory
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setNavigationTitle(arguments?.getString(EntranceUtils.KEY_CATEGORY_TITLE))
|
||||
mListRv.setBackgroundColor(Color.WHITE)
|
||||
mListRefresh?.isEnabled = false
|
||||
}
|
||||
|
||||
override fun provideListAdapter(): ListAdapter<*> {
|
||||
|
||||
@ -380,11 +380,26 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName:
|
||||
val subjectEntity = mItemDataList[position].horizontalColumn
|
||||
val exposureEventList = arrayListOf<ExposureEvent>()
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<ExposureEvent>) : BaseRecyclerAdapter<GameHorizontalItemViewHolder>(context) {
|
||||
class GameHorizontalAdapter(context: Context, subject: SubjectEntity) : BaseRecyclerAdapter<GameHorizontalItemViewHolder>(context) {
|
||||
private var mSubjectEntity: SubjectEntity = subject
|
||||
|
||||
private var mIndex = 0
|
||||
var index = 0
|
||||
var exposureEventList: ArrayList<ExposureEvent>? = 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])
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<AnswerEntity, A
|
||||
@BindView(R.id.reuse_nodata_skip_tv_btn)
|
||||
View mSkipHint;
|
||||
@BindView(R.id.refresh_layout)
|
||||
RefreshLayout refreshLayout;
|
||||
DumbRefreshLayout refreshLayout;
|
||||
@BindView(R.id.swipe_refresh_header)
|
||||
SwipeRefreshHeader swipeRefreshHeader;
|
||||
|
||||
@ -75,15 +75,18 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
case 0:
|
||||
swipeRefreshHeader.setFinishText("已经没有新内容咯,请稍后再试");
|
||||
AskLogUtils.communityRefresh(getContext(), integer);
|
||||
refreshLayout.finishRefresh(300);
|
||||
mInitRefresh = false;
|
||||
refreshLayout.finishRefresh();
|
||||
break;
|
||||
case -1:
|
||||
toast("获取失败,请检查网络设置");
|
||||
mInitRefresh = false;
|
||||
refreshLayout.finishRefresh(false);
|
||||
break;
|
||||
default:
|
||||
swipeRefreshHeader.setFinishText("成功获取" + integer + "条内容");
|
||||
refreshLayout.finishRefresh(300);
|
||||
mInitRefresh = false;
|
||||
refreshLayout.finishRefresh();
|
||||
AskLogUtils.communityRefresh(getContext(), integer);
|
||||
break;
|
||||
}
|
||||
@ -115,7 +118,7 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
|
||||
@Override
|
||||
protected void hideRefreshingLayout() {
|
||||
swipeRefreshHeader.postDelayed(() -> refreshLayout.finishRefresh(), 200);
|
||||
swipeRefreshHeader.postDelayed(() -> refreshLayout.finishRefresh(0), 200);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -149,7 +152,11 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
if (requestCode == COMMUNITIES_SELECT_REQUEST && resultCode == Activity.RESULT_OK) {
|
||||
mLayoutManager.scrollToPosition(0);
|
||||
initList();
|
||||
autoRefresh(true);
|
||||
if (refreshLayout.isRefreshing()) {
|
||||
autoRefresh(true, 250);
|
||||
} else {
|
||||
autoRefresh(true, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,7 +193,7 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
break;
|
||||
case R.id.ask_recommends_item_refresh:
|
||||
scrollToTop();
|
||||
autoRefresh(false);
|
||||
autoRefresh(false, 0);
|
||||
// onRefresh();
|
||||
break;
|
||||
}
|
||||
@ -231,7 +238,7 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
if (LOGIN_TAG.equals(reuse.getType()) || LOGOUT_TAG.equals(reuse.getType())) {
|
||||
mBaseHandler.removeMessages(2);
|
||||
initList();
|
||||
autoRefresh(true);
|
||||
autoRefresh(true, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -240,8 +247,12 @@ public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, A
|
||||
return new VerticalItemDecoration(getContext(), 8, false);
|
||||
}
|
||||
|
||||
private void autoRefresh(boolean onlyShowRefreshStyleButNotRefreshAtAll) {
|
||||
private void autoRefresh(boolean onlyShowRefreshStyleButNotRefreshAtAll, int delay) {
|
||||
mInitRefresh = onlyShowRefreshStyleButNotRefreshAtAll;
|
||||
refreshLayout.autoRefresh();
|
||||
refreshLayout.postDelayed(() -> refreshLayout.autoRefresh(0, 500, 1), delay);
|
||||
}
|
||||
|
||||
public void hideRefreshHint() {
|
||||
refreshLayout.finishRefresh(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height = "match_parent">
|
||||
|
||||
<com.scwang.smartrefresh.layout.SmartRefreshLayout
|
||||
<com.gh.common.view.DumbRefreshLayout
|
||||
android:id = "@+id/refresh_layout"
|
||||
android:layout_below = "@id/refresh_hint"
|
||||
android:layout_width = "match_parent"
|
||||
@ -18,7 +18,7 @@
|
||||
android:id = "@+id/list_rv"
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height = "wrap_content" />
|
||||
</com.scwang.smartrefresh.layout.SmartRefreshLayout >
|
||||
</com.gh.common.view.DumbRefreshLayout >
|
||||
|
||||
<com.gc.materialdesign.views.ProgressBarCircularIndeterminate
|
||||
android:id = "@+id/list_loading"
|
||||
|
||||
Reference in New Issue
Block a user