diff --git a/app/src/main/java/com/gh/common/util/CommentUtils.java b/app/src/main/java/com/gh/common/util/CommentUtils.java index b751ed7729..3c1fe6f181 100644 --- a/app/src/main/java/com/gh/common/util/CommentUtils.java +++ b/app/src/main/java/com/gh/common/util/CommentUtils.java @@ -145,7 +145,8 @@ public class CommentUtils { } public static void showAnswerCommentOptions(final CommentEntity commentEntity, final Context context, - final OnCommentCallBackListener listener, final String id, boolean showConversation, String answerId) { + final OnCommentCallBackListener listener, final String id, + boolean showConversation, String answerId, String articleId, String articleCommunityId) { final Dialog dialog = new Dialog(context); @@ -201,7 +202,12 @@ public class CommentUtils { CheckLoginUtils.checkLogin(context, () -> showAnswerReportDialog(answerId, commentEntity, context)); break; case "查看对话": - context.startActivity(CommentDetailActivity.getAnswerCommentIntent(context, commentEntity.getId(), answerId)); + + if (TextUtils.isEmpty(articleId)) { + context.startActivity(CommentDetailActivity.getAnswerCommentIntent(context, commentEntity.getId(), answerId)); + } else { + context.startActivity(CommentDetailActivity.getCommunityArticleCommentIntent(context, articleId, commentEntity.getId(), articleCommunityId)); + } break; } }); 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 8acc81a190..89ed10cfb2 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -10,6 +10,7 @@ import com.gh.common.util.EntranceUtils.* import com.gh.gamecenter.* import com.gh.gamecenter.download.DownloadFragment.Companion.INDEX_UPDATE import com.gh.gamecenter.entity.CommunityEntity +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.entity.SubjectData import com.gh.gamecenter.eventbus.EBReuse import com.gh.gamecenter.eventbus.EBSkip @@ -17,7 +18,9 @@ import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.qa.AskFragment import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity +import com.gh.gamecenter.qa.column.detail.AskColumnDetailActivity import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity +import com.gh.gamecenter.qa.subject.CommunitySubjectActivity import com.gh.gamecenter.subject.refactor.SubjectActivity import com.gh.gamecenter.suggest.SuggestType import com.lightgame.utils.Util_System_ClipboardManager @@ -59,6 +62,35 @@ object DirectUtils { } } + /** + * 跳转到特定页面,只支持App内部跳转 + */ + @JvmStatic + fun directToLinkPage(context: Context, linkEntity: LinkEntity, entrance: String, path: String) { + when (linkEntity.type) { + "article", "news" -> { + NewsUtils.statNewsViews(context, linkEntity.link) // 统计阅读量 + context.startActivity(NewsDetailActivity.getIntentById(context, linkEntity.link, entrance)) + } + + "game" -> GameDetailActivity.startGameDetailActivity(context, linkEntity.link, entrance) + + "column" -> SubjectActivity.startSubjectActivity(context, linkEntity.link, linkEntity.text, false, entrance) + + "question" -> context.startActivity(QuestionsDetailActivity.getIntent(context, linkEntity.link, entrance, path)) + + "answer" -> context.startActivity(AnswerDetailActivity.getIntent(context, linkEntity.link, entrance, path)) + + "community_article" -> context.startActivity(ArticleDetailActivity.getIntent(context, linkEntity.community!!, linkEntity.link!!)) + + "community_column" -> context.startActivity(CommunitySubjectActivity.getIntent(context, linkEntity.community!!, linkEntity.link)) + + "community_special_column" -> context.startActivity(AskColumnDetailActivity.getIntentByColumnId(context, linkEntity.link, linkEntity.community!!)) + + else -> DialogUtils.showLowVersionDialog(context) + } + } + /** * 跳转到文章详情 */ diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 9b856c64a1..26ed188646 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -104,7 +104,7 @@ public class EntranceUtils { public static final String KEY_AUTO_UPDATE = "auto_update"; public static final String KEY_HIDE_SUGGEST_HINT = "hide_suggest_hint"; public static final String KEY_COMMUNITY_ARTICLE_ID = "communityArticleId"; - public static final String KEY_ARTICLE_COMMENTID = "articleCommentId"; + public static final String KEY_ARTICLE_COMMENT_ID = "articleCommentId"; public static void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java index 2d9d0192fc..a73d30a5eb 100644 --- a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java @@ -6,6 +6,7 @@ import android.os.Bundle; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.entity.MessageEntity; +import com.gh.gamecenter.qa.answer.detail.comment.AnswerCommentActivity; import com.gh.gamecenter.qa.answer.detail.comment.AnswerCommentConversationFragment; import com.halo.assistant.fragment.comment.CommentDetailFragment; @@ -19,9 +20,6 @@ public class CommentDetailActivity extends NormalActivity { Bundle args = new Bundle(); args.putString(EntranceUtils.KEY_COMMENTID, commentId); args.putParcelable(MessageEntity.Article.TAG, article); -// return new IntentFactory.Builder(context) -// .setActivity(CommentDetailActivity.class) -// .setFragment(CommentDetailFragment.class).setArgs(args).build(); return getTargetIntent(context, CommentDetailActivity.class, CommentDetailFragment.class, args); } @@ -29,9 +27,15 @@ public class CommentDetailActivity extends NormalActivity { Bundle args = new Bundle(); args.putString(EntranceUtils.KEY_COMMENTID, commentId); args.putString(EntranceUtils.KEY_ANSWER_ID, answerId); -// return new IntentFactory.Builder(context) -// .setActivity(CommentDetailActivity.class) -// .setFragment(CommentDetailFragment.class).setArgs(args).build(); + return getTargetIntent(context, CommentDetailActivity.class, AnswerCommentConversationFragment.class, args); + } + + + public static Intent getCommunityArticleCommentIntent(Context context, String articleId, String articleCommentId, String articleCommunityId) { + Bundle args = new Bundle(); + args.putString(AnswerCommentActivity.ARTICLE_ID, articleId); + args.putString(EntranceUtils.KEY_ARTICLE_COMMENT_ID, articleCommentId); + args.putString(AnswerCommentActivity.ARTICLE_COMMUNITY_ID, articleCommunityId); return getTargetIntent(context, CommentDetailActivity.class, AnswerCommentConversationFragment.class, args); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index 9333cc4227..64145e0209 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -6,22 +6,17 @@ package com.gh.gamecenter.adapter; import android.content.Context; -import android.content.Intent; import android.view.View; import android.view.ViewGroup; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; -import com.gh.common.util.DialogUtils; +import com.gh.common.util.DirectUtils; import com.gh.common.util.ImageUtils; -import com.gh.common.util.NewsUtils; import com.gh.common.util.StringUtils; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.entity.SlideEntity; -import com.gh.gamecenter.subject.refactor.SubjectActivity; +import com.gh.gamecenter.entity.LinkEntity; import java.util.List; @@ -34,7 +29,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { private Context mContext; // private List imageIdList; - private List mSlideEntityList; + private List mSlideEntityList; private int mSize; private boolean mIsInfiniteLoop; @@ -43,7 +38,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { // private ImageIndicator indicator; - public ImagePagerAdapter(Context context, List slideEntityList, boolean isInfiniteLoop, String source) { + public ImagePagerAdapter(Context context, List slideEntityList, boolean isInfiniteLoop, String source) { mContext = context; mSlideEntityList = slideEntityList; mSize = getSize(slideEntityList); @@ -51,7 +46,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { mSource = source; } - public int getSize(List sourceList) { + public int getSize(List sourceList) { return sourceList == null ? 0 : sourceList.size(); } @@ -70,7 +65,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { int index = getPosition(position); if (index >= mSlideEntityList.size()) return view; - final SlideEntity slideEntity = mSlideEntityList.get(index); + final LinkEntity slideEntity = mSlideEntityList.get(index); ImageUtils.display(mContext.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload); @@ -81,35 +76,17 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { // 首页轮播图数据统计 DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(), - slideEntity.getName(), String.valueOf(getPosition(position) % mSlideEntityList.size() + 1)); + slideEntity.getText(), String.valueOf(getPosition(position) % mSlideEntityList.size() + 1)); String entrance = StringUtils.buildString("(游戏-专题:滚动图[" - , slideEntity.getName() + , slideEntity.getText() , "=", slideEntity.getType() , "=", String.valueOf(getPosition(position) + 1) , "])"); DataUtils.onMtaEvent(mContext, "轮播图", mSource, String.valueOf(getPosition(position) % mSlideEntityList.size() + 1)); - switch (slideEntity.getType()) { - case "game": - GameDetailActivity.startGameDetailActivity(mContext, slideEntity.getLink(), entrance); - break; - case "news": - // 统计阅读量 - NewsUtils.statNewsViews(mContext, slideEntity.getLink()); - - Intent intent = NewsDetailActivity.getIntentById(mContext, slideEntity.getLink(), entrance); - mContext.startActivity(intent); - break; - case "column": - SubjectActivity.startSubjectActivity(mContext, slideEntity.getLink(), - slideEntity.getName(), false, entrance); - break; - default: - DialogUtils.showLowVersionDialog(mContext); - break; - } + DirectUtils.directToLinkPage(mContext, slideEntity, entrance, "(首页游戏)"); }); @@ -141,7 +118,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { return this; } - public void checkResetData(List list) { + public void checkResetData(List list) { if (mSlideEntityList != list) { mSlideEntityList = list; mSize = getSize(list); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index 7793982d75..43e3891dfd 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -22,6 +22,7 @@ import com.gh.common.exposure.ExposureUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.PackageUtils; @@ -29,8 +30,6 @@ import com.gh.common.util.PlatformUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.DownloadManagerActivity; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.VoteActivity; import com.gh.gamecenter.adapter.viewholder.PlatformViewHolder; @@ -40,7 +39,6 @@ import com.gh.gamecenter.entity.CollectionCloseEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.manager.PackageManager; -import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.download.DownloadEntity; @@ -137,21 +135,7 @@ public class PlatformAdapter extends BaseRecyclerAdapter { ApkLink apkLink = apkEntity.getApkLink(); if (apkLink != null) { String entrance = mEntrance + "(" + apkLink.getName() + ")"; - switch (apkLink.getType()) { - case "game": - GameDetailActivity.startGameDetailActivity(mContext, apkLink.getLink(), entrance); - break; - case "article": - mContext.startActivity(NewsDetailActivity.getIntentById(mContext, apkLink.getLink(), entrance)); - break; - case "column": - SubjectActivity.startSubjectActivity(mContext, apkLink.getLink(), null, false, entrance); - break; - default: - DialogUtils.showLowVersionDialog(mContext); - break; - } - + DirectUtils.directToLinkPage(mContext, apkLink.getLinkEntity(), entrance, "(下载多平台弹窗)"); } else if (viewHolder.mDownloadItemTvStatus.getVisibility() == View.GONE) { //下载游戏 DialogUtils.checkDownload(mContext, apkEntity.getSize(), diff --git a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt index 0f49afc2ef..f045329907 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt @@ -50,4 +50,13 @@ class ApkLink(@SerializedName("_id") val link: String = "", val text: String = "", val sort: Int = 0, - val collection: String = "") : Parcelable \ No newline at end of file + val collection: String = "") : Parcelable { + + fun getLinkEntity(): LinkEntity { + val linkEntity = LinkEntity() + linkEntity.type = type + linkEntity.link = link + linkEntity.text = text + return linkEntity + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/LinkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/LinkEntity.kt new file mode 100644 index 0000000000..031d618350 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/LinkEntity.kt @@ -0,0 +1,14 @@ +package com.gh.gamecenter.entity + +import android.os.Parcelable +import com.google.gson.annotations.SerializedName +import kotlinx.android.parcel.Parcelize + +@Parcelize +open class LinkEntity( + var image: String? = "", + var link: String? = "", + var type: String? = "", + var text: String? = "", + @SerializedName("link_community") + val community: CommunityEntity? = CommunityEntity()) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SlideEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SlideEntity.kt deleted file mode 100644 index 538ef11dcf..0000000000 --- a/app/src/main/java/com/gh/gamecenter/entity/SlideEntity.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.gamecenter.entity - -import com.google.gson.annotations.SerializedName - -/** - * Created by khy on 2016/6/29. - */ -class SlideEntity { - - var image: String? = null - - var link: String? = null - - var type: String? = null - - @SerializedName("text") - var name: String? = null - -} 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 ce09043ca9..86dc7fc976 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -29,6 +29,7 @@ import com.gh.gamecenter.category.CategoryDirectoryActivity import com.gh.gamecenter.databinding.* import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.entity.GameEntity +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.data.GameItemData import com.gh.gamecenter.game.horizontal.GameHorizontalAdapter @@ -372,19 +373,11 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: holder.binding.gameImageIcon.setOnClickListener { DataCollectionUtils.uploadClick(mContext, "$name-大图", "游戏-专题") DataUtils.onMtaEvent(mContext, "游戏专题", "大图", name) - when (entity?.type) { - "game" -> GameDetailActivity.startGameDetailActivity(mContext, link, "(游戏-专题:$name-大图)", mItemDataList[position].exposureEvent) - "news" -> { - // 统计阅读量 - NewsUtils.statNewsViews(mContext, link) - - val intent = NewsDetailActivity.getIntentById(mContext, link, "(游戏-专题:$name-大图)") - mContext.startActivity(intent) - } - "column" -> SubjectActivity.startSubjectActivity(mContext, link, name, false, "(游戏-专题:$name-大图)") - - else -> DialogUtils.showLowVersionDialog(mContext) - } + val linkEntity = LinkEntity() + linkEntity.link = link + linkEntity.type = entity?.type + linkEntity.text = name + DirectUtils.directToLinkPage(mContext, linkEntity, "(游戏-专题:$name-大图)", "(首页游戏)") } } else if (holder is GameHorizontalListViewHolder) { val subjectEntity = mItemDataList[position].horizontalColumn diff --git a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt index 6f426aea09..369bb640d4 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt @@ -37,7 +37,7 @@ class GameViewModel(application: Application, blockData: SubjectRecommendEntity? var blockData = blockData - var slideList = ArrayList() // 轮播图 + var slideList = ArrayList() // 轮播图 var pluginList: List? = null // 插件化 var subjectList: MutableList = ArrayList() // 专题 var subjectDigestList = ArrayList() // 专题入口 @@ -145,8 +145,8 @@ class GameViewModel(application: Application, blockData: SubjectRecommendEntity? val observable = if (blockData == null) mApi.slide else mApi.getBlockSlides(blockData?.link) observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { + .subscribe(object : Response>() { + override fun onResponse(response: List?) { if (response != null) slideList.addAll(response) if (initData) getSubjectDigest(initData) } diff --git a/app/src/main/java/com/gh/gamecenter/game/data/GameItemData.kt b/app/src/main/java/com/gh/gamecenter/game/data/GameItemData.kt index bf17dac588..4aa2ba823e 100644 --- a/app/src/main/java/com/gh/gamecenter/game/data/GameItemData.kt +++ b/app/src/main/java/com/gh/gamecenter/game/data/GameItemData.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.game.data import com.gh.common.exposure.ExposureEvent import com.gh.gamecenter.entity.GameEntity -import com.gh.gamecenter.entity.SlideEntity +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.entity.SubjectEntity import com.gh.gamecenter.entity.SubjectRecommendEntity @@ -13,7 +13,7 @@ class GameItemData { var subjectRecommend: List? = null var image: GameEntity? = null var pluginList: List? = null - var slideList: List? = null + var slideList: List? = null var exposureEvent: ExposureEvent? = null var exposureEventList: List? = null } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentAdapter.java index ed087916cb..168cb7b421 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentAdapter.java @@ -91,7 +91,8 @@ public class AnswerCommentAdapter extends ListAdapter { holder.commentLikeIv.setOnClickListener(v -> CommentUtils.postVoteToAnswerComment(mContext, mAnswerId, mArticleId, mArticleCommunityId, commentEntity, holder.commentLikeCountTv, holder.commentLikeIv, null)); - holder.itemView.setOnClickListener(v -> CommentUtils.showAnswerCommentOptions(commentEntity, mContext, mOnCommentCallBackListener, null, !mIsShowingConversation, mAnswerId)); + holder.itemView.setOnClickListener(v -> CommentUtils.showAnswerCommentOptions(commentEntity, mContext, mOnCommentCallBackListener, null + , !mIsShowingConversation, mAnswerId, mArticleId, mArticleCommunityId)); holder.commentUserIconDv.setOnClickListener(v -> PersonalHomeActivity.startTargetActivity(mContext, commentEntity.getUser().getId(), "回答详情-评论管理")); holder.commentUserNameTv.setOnClickListener(v -> PersonalHomeActivity.startTargetActivity(mContext, commentEntity.getUser().getId(), "回答详情-评论管理")); diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentConversationFragment.java b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentConversationFragment.java index af0bd28e12..34e4fb1db3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentConversationFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/comment/AnswerCommentConversationFragment.java @@ -33,8 +33,11 @@ public class AnswerCommentConversationFragment extends AnswerCommentFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { mCommentId = getArguments().getString(EntranceUtils.KEY_COMMENTID); - mArticleCommentId = getArguments().getString(EntranceUtils.KEY_ARTICLE_COMMENTID); mAnswerId = getArguments().getString(EntranceUtils.KEY_ANSWER_ID); + + mArticleId = getArguments().getString(AnswerCommentActivity.ARTICLE_ID); + mArticleCommentId = getArguments().getString(EntranceUtils.KEY_ARTICLE_COMMENT_ID); + mArticleCommunityId = getArguments().getString(AnswerCommentActivity.ARTICLE_COMMUNITY_ID); super.onCreate(savedInstanceState); } diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/AskSlideEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/AskSlideEntity.kt deleted file mode 100644 index 5e1ea40b93..0000000000 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/AskSlideEntity.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.gh.gamecenter.qa.entity - -import android.os.Parcelable -import com.gh.gamecenter.entity.CommunityEntity -import com.google.gson.annotations.SerializedName -import kotlinx.android.parcel.Parcelize - -@Parcelize -data class AskSlideEntity(var type: String? = null, - var link: String? = null, - var text: String? = null, - var image: String? = null, - @SerializedName("link_community") - val community: CommunityEntity = CommunityEntity()) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendSubjectViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendSubjectViewModel.kt index e460de0b5d..8e63734cc2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendSubjectViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendSubjectViewModel.kt @@ -3,8 +3,8 @@ package com.gh.gamecenter.qa.recommends import android.app.Application import android.arch.lifecycle.AndroidViewModel import android.arch.lifecycle.MediatorLiveData +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.manager.UserManager -import com.gh.gamecenter.qa.entity.AskSlideEntity import com.gh.gamecenter.retrofit.Response import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.android.schedulers.AndroidSchedulers @@ -12,7 +12,7 @@ import io.reactivex.schedulers.Schedulers import retrofit2.HttpException class AskRecommendSubjectViewModel(application: Application) : AndroidViewModel(application) { - val slideLiveData = MediatorLiveData>() + val slideLiveData = MediatorLiveData>() init { loadAskSlideColumn() @@ -25,8 +25,8 @@ class AskRecommendSubjectViewModel(application: Application) : AndroidViewModel( .getAskSlide(UserManager.getInstance().community.id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { + .subscribe(object : Response>() { + override fun onResponse(response: List?) { super.onResponse(response) if (communityId == UserManager.getInstance().community.id) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt index 33102420ed..12e6395612 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt @@ -23,8 +23,8 @@ import com.gh.common.util.DisplayUtils import com.gh.common.view.DumbRefreshLayout import com.gh.common.view.SwipeRefreshHeader import com.gh.gamecenter.R +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.qa.AskFragment.COMMUNITIES_SELECT_REQUEST -import com.gh.gamecenter.qa.entity.AskSlideEntity import com.gh.gamecenter.qa.recommends.newest.RecommendNewestFragment import kotterknife.bindView @@ -136,7 +136,7 @@ class AskRecommendWrapperFragment : BaseFragment() { } } - private fun initViewPager(slide: List) { + private fun initViewPager(slide: List) { // init viewpager hint val size = slide.size diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendsSubjectPageAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendsSubjectPageAdapter.java index 3526ab02ec..dc051206fc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendsSubjectPageAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendsSubjectPageAdapter.java @@ -6,20 +6,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.gh.common.util.DialogUtils; +import com.gh.common.util.DirectUtils; import com.gh.common.util.ImageUtils; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.RecyclingPagerAdapter; import com.gh.gamecenter.databinding.AskRecommendsSubjectItemBinding; -import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; -import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity; -import com.gh.gamecenter.qa.column.detail.AskColumnDetailActivity; -import com.gh.gamecenter.qa.entity.AskSlideEntity; -import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; -import com.gh.gamecenter.qa.subject.CommunitySubjectActivity; -import com.gh.gamecenter.subject.refactor.SubjectActivity; +import com.gh.gamecenter.entity.LinkEntity; import java.util.List; @@ -31,9 +23,9 @@ public class AskRecommendsSubjectPageAdapter extends RecyclingPagerAdapter { private Context mContext; - private List mEntityList; + private List mEntityList; - public AskRecommendsSubjectPageAdapter(Context context, List entityList) { + public AskRecommendsSubjectPageAdapter(Context context, List entityList) { mContext = context; mEntityList = entityList; } @@ -46,39 +38,9 @@ public class AskRecommendsSubjectPageAdapter extends RecyclingPagerAdapter { } else { binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ask_recommends_subject_item, null, false); } - AskSlideEntity entity = mEntityList.get(position % mEntityList.size()); + LinkEntity entity = mEntityList.get(position % mEntityList.size()); ImageUtils.display(binding.subjectIcon, entity.getImage()); - binding.getRoot().setOnClickListener(v -> { - switch (entity.getType()) { - case "news": - mContext.startActivity(NewsDetailActivity.getIntentById(mContext, entity.getLink(), "(社区轮播图)")); - break; - case "game": - GameDetailActivity.startGameDetailActivity(mContext, entity.getLink(), "(社区轮播图)"); - break; - case "column": - SubjectActivity.startSubjectActivity(mContext, entity.getLink(), null, false, "(社区轮播图)"); - break; - case "question": - mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, entity.getLink(), "(社区轮播图)", "(社区轮播图)")); - break; - case "answer": - mContext.startActivity(AnswerDetailActivity.getIntent(mContext, entity.getLink(), "(社区轮播图)", "社区轮播图")); - break; - case "community_article": - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, entity.getCommunity(), entity.getLink())); - break; - case "community_column": - mContext.startActivity(CommunitySubjectActivity.getIntent(mContext, entity.getCommunity(), entity.getLink())); - break; - case "community_special_column": - mContext.startActivity(AskColumnDetailActivity.getIntentByColumnId(mContext, entity.getLink(), entity.getCommunity())); - break; - default: - DialogUtils.showLowVersionDialog(mContext); - break; - } - }); + binding.getRoot().setOnClickListener(v -> DirectUtils.directToLinkPage(mContext, entity, "(社区轮播图)", "(首页社区)")); return binding.getRoot(); } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index 09f7557171..580f8c9dde 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -14,6 +14,7 @@ import com.gh.gamecenter.entity.ImageInfoEntity; import com.gh.gamecenter.entity.LibaoDetailEntity; import com.gh.gamecenter.entity.LibaoEntity; import com.gh.gamecenter.entity.LibaoStatusEntity; +import com.gh.gamecenter.entity.LinkEntity; import com.gh.gamecenter.entity.LoginTokenEntity; import com.gh.gamecenter.entity.MessageEntity; import com.gh.gamecenter.entity.MessageKeFuEntity; @@ -26,7 +27,6 @@ import com.gh.gamecenter.entity.PersonalHistoryEntity; import com.gh.gamecenter.entity.PlatformEntity; import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.entity.SignEntity; -import com.gh.gamecenter.entity.SlideEntity; import com.gh.gamecenter.entity.SubjectEntity; import com.gh.gamecenter.entity.SubjectRecommendEntity; import com.gh.gamecenter.entity.SubjectSettingEntity; @@ -42,7 +42,6 @@ import com.gh.gamecenter.qa.entity.ArticleDraftEntity; import com.gh.gamecenter.qa.entity.ArticleEntity; import com.gh.gamecenter.qa.entity.AskGameSelectEntity; import com.gh.gamecenter.qa.entity.AskSearchEntity; -import com.gh.gamecenter.qa.entity.AskSlideEntity; import com.gh.gamecenter.qa.entity.AskSubjectEntity; import com.gh.gamecenter.qa.entity.AskTagGroupsEntity; import com.gh.gamecenter.qa.entity.InviteEntity; @@ -221,7 +220,7 @@ public interface ApiService { * 获取首页滚动图 */ @GET("index/slides") - Observable> getSlide(); + Observable> getSlide(); /** * 获取游戏插件专题数据 @@ -875,7 +874,7 @@ public interface ApiService { * 获取社区轮播图列表 */ @GET("communities/{community_id}/slides") - Observable> getAskSlide(@Path("community_id") String communityId); + Observable> getAskSlide(@Path("community_id") String communityId); /** * 社区专题的答案 @@ -1018,7 +1017,7 @@ public interface ApiService { * 获取版块的轮播图 */ @GET("blocks/{block_id}/slides") - Observable> getBlockSlides(@Path("block_id") String blockId); + Observable> getBlockSlides(@Path("block_id") String blockId); /** * 获得版块的推荐位列表 diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt index 67b29e40e6..83f11418e7 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt @@ -13,7 +13,6 @@ import com.gh.common.exposure.ExposureType import com.gh.common.exposure.IExposable import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity -import com.gh.gamecenter.NewsDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder @@ -22,6 +21,7 @@ import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.LoadType import com.gh.gamecenter.databinding.GameItemBinding import com.gh.gamecenter.entity.GameEntity +import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.download.DownloadEntity @@ -146,21 +146,11 @@ class SubjectAdapter(context: Context, } holder.itemView.setOnClickListener { DataCollectionUtils.uploadClick(mContext, "头图", subjectData.subjectName) - when (gameEntity.type) { - "game" -> GameDetailActivity.startGameDetailActivity(mContext, gameEntity.link, - mEntrance + "(" + subjectData.subjectName + ":大图)", mExposureEventSparseArray[position]) - "news" -> { - // 统计阅读量 - NewsUtils.statNewsViews(mContext, gameEntity.link) - val intent = NewsDetailActivity.getIntentById(mContext, gameEntity.link, - mEntrance + "(" + subjectData.subjectName + ":大图)") - mContext.startActivity(intent) - } - "column" -> SubjectActivity.startSubjectActivity(mContext, gameEntity.link - , gameEntity.name, false, mEntrance + "(" + subjectData.subjectName + ":大图)") - - else -> DialogUtils.showLowVersionDialog(mContext) - } + val linkEntity = LinkEntity() + linkEntity.link = gameEntity.link + linkEntity.type = gameEntity?.type + linkEntity.text = gameEntity.name + DirectUtils.directToLinkPage(mContext, linkEntity, mEntrance + "(" + subjectData.subjectName + ":大图)", "(游戏专题)") } } else if (holder is FooterViewHolder) { holder.initItemPadding()