Merge branch 'dev' of gitlab.ghzhushou.com:halo/assistant-android into dev

This commit is contained in:
kehaoyuan
2018-06-29 23:09:52 +08:00
7 changed files with 79 additions and 33 deletions

View 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;
}
}

View File

@ -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<*> {

View File

@ -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
}
}
}

View File

@ -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])
})
}

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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"