From 79d1c4fed4c2a13588407ff74ee41b36cd935a07 Mon Sep 17 00:00:00 2001 From: juntao Date: Thu, 14 May 2020 18:21:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=904.0.1=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E8=AE=B0=E5=BD=95=E4=BC=98=E5=8C=96=20https:?= =?UTF-8?q?//gitlab.ghzs.com/pm/halo-app-issues/-/issues/852?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/common/databind/BindingAdapters.java | 11 +++- .../gh/common/dialog/ReserveDialogFragment.kt | 4 ++ .../com/gh/common/history/HistoryHelper.kt | 30 ++++++++- .../com/gh/common/util/DownloadItemUtils.java | 11 +++- .../java/com/gh/download/DownloadManager.java | 6 +- .../adapter/viewholder/DetailViewHolder.java | 17 +++-- .../gamecenter/collection/AnswerAdapter.java | 65 ++++++++++--------- .../gamecenter/collection/AnswerFragment.java | 39 ++++------- .../gamecenter/collection/AnswerViewModel.kt | 21 +++++- .../gamecenter/collection/ArticleAdapter.java | 30 ++++++++- .../collection/ArticleFragment.java | 40 +++++++----- .../collection/ArticleViewModel.java | 23 ++++++- .../collection/CollectionWrapperFragment.java | 6 +- .../collection/CommunityArticleAdapter.kt | 28 ++++++-- .../collection/CommunityArticleFragment.kt | 35 +++++----- .../collection/CommunityArticleViewModel.kt | 19 +++++- .../gh/gamecenter/collection/VideoAdapter.kt | 19 ++++-- .../gh/gamecenter/collection/VideoFragment.kt | 41 +++--------- .../gamecenter/collection/VideoViewModel.kt | 46 +++++++++++++ .../download/GameUpdateFragmentAdapter.java | 11 ++-- .../history/HistoryGameListAdapter.kt | 16 ++++- .../history/HistoryGameListViewModel.kt | 16 +++++ .../history/HistoryWrapperFragment.kt | 11 ++-- .../gh/gamecenter/qa/editor/AnswerAdapter.kt | 4 +- .../gh/gamecenter/qa/editor/AnswerFragment.kt | 2 +- .../qa/questions/detail/AnswerViewHolder.java | 14 ++-- .../assistant/fragment/SettingsFragment.java | 4 -- 27 files changed, 376 insertions(+), 193 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index 321525a421..7f21865761 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -20,6 +20,7 @@ import com.gh.common.dialog.CertificationDialog; import com.gh.common.dialog.ReserveDialogFragment; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; +import com.gh.common.history.HistoryHelper; import com.gh.common.repository.ReservationRepository; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DataUtils; @@ -465,9 +466,15 @@ public class BindingAdapters { } break; case H5_GAME: - MtaHelper.onEvent("H5页面", "入口", "列表页_" + gameEntity.getName()); LinkEntity linkEntity = gameEntity.getH5Link(); - Intent i = new Intent(WebActivity.getIntentForWebGame(progressBar.getContext(), linkEntity.getLink(), gameEntity.getName(), "play".equals(linkEntity.getType()))); + boolean isPlay = "play".equals(linkEntity.getType()); // 是否为开始玩 + MtaHelper.onEvent("H5页面", "入口", "列表页_" + gameEntity.getName()); + + if (isPlay) { + HistoryHelper.insertGameEntity(gameEntity); + } + + Intent i = new Intent(WebActivity.getIntentForWebGame(progressBar.getContext(), linkEntity.getLink(), gameEntity.getName(), isPlay)); progressBar.getContext().startActivity(i); break; } diff --git a/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt index ad4ecfb6d6..254e0a1e63 100644 --- a/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt @@ -15,6 +15,7 @@ import butterknife.BindView import butterknife.ButterKnife import butterknife.OnClick import com.gh.common.constant.Config +import com.gh.common.history.HistoryHelper import com.gh.common.repository.ReservationRepository import com.gh.common.util.* import com.gh.gamecenter.R @@ -49,6 +50,7 @@ class ReserveDialogFragment : BaseTrackableDialogFragment() { private var mSuccessCallback: SuccessCallback? = null + private var mGame: GameEntity? = null private var mGameId: String = "" private var mGameName: String = "" @@ -86,6 +88,7 @@ class ReserveDialogFragment : BaseTrackableDialogFragment() { if (it.success) { showSuccessDialog(it.withMobile, it.boundWechat) mSuccessCallback?.onSuccess() + HistoryHelper.insertGameEntity(mGame!!) } } dialog?.setCanceledOnTouchOutside(true) @@ -149,6 +152,7 @@ class ReserveDialogFragment : BaseTrackableDialogFragment() { companion object { @JvmStatic fun getInstance(gameEntity: GameEntity, successCallback: SuccessCallback) = ReserveDialogFragment().apply { + this.mGame = gameEntity this.mGameId = gameEntity.id this.mGameName = gameEntity.name ?: "" this.mSuccessCallback = successCallback diff --git a/app/src/main/java/com/gh/common/history/HistoryHelper.kt b/app/src/main/java/com/gh/common/history/HistoryHelper.kt index 54f267e440..8703332d3d 100644 --- a/app/src/main/java/com/gh/common/history/HistoryHelper.kt +++ b/app/src/main/java/com/gh/common/history/HistoryHelper.kt @@ -4,9 +4,7 @@ import com.gh.common.runOnIoThread import com.gh.common.util.clearHtmlFormatCompletely import com.gh.common.util.removeInsertedContent import com.gh.common.util.removeVideoContent -import com.gh.gamecenter.entity.GameEntity -import com.gh.gamecenter.entity.HistoryGameEntity -import com.gh.gamecenter.entity.NewsEntity +import com.gh.gamecenter.entity.* import com.gh.gamecenter.qa.entity.AnswerDetailEntity import com.gh.gamecenter.qa.entity.AnswerEntity import com.gh.gamecenter.qa.entity.ArticleDetailEntity @@ -24,11 +22,32 @@ object HistoryHelper { runOnIoThread { HistoryDatabase.instance.articleDao().addArticle(articleEntity) } } + @JvmStatic fun insertGameEntity(gameEntity: GameEntity) { val historyGameEntity = convertGameEntityToHistoryGameEntity(gameEntity) runOnIoThread { HistoryDatabase.instance.gameDao().addGame(historyGameEntity) } } + @JvmStatic + fun insertGameEntity(updateEntity: GameUpdateEntity) { + val historyGameEntity = convertGameUpdateEntityToHistoryGameEntity(updateEntity) + runOnIoThread { HistoryDatabase.instance.gameDao().addGame(historyGameEntity) } + } + + private fun convertGameUpdateEntityToHistoryGameEntity(updateEntity: GameUpdateEntity): HistoryGameEntity{ + val historyGame = HistoryGameEntity() + + historyGame.orderTag = System.currentTimeMillis() + historyGame.id = updateEntity.id + historyGame.brief = updateEntity.brief + historyGame.des = "" + historyGame.icon = updateEntity.icon + historyGame.name = updateEntity.name + historyGame.tagStyle = updateEntity.tagStyle + historyGame.tag = updateEntity.tag + return historyGame + } + private fun convertGameEntityToHistoryGameEntity(gameEntity: GameEntity): HistoryGameEntity { val historyGame = HistoryGameEntity() @@ -70,6 +89,11 @@ object HistoryHelper { runOnIoThread { HistoryDatabase.instance.answerDao().deleteAnswer(AnswerEntity().apply { primaryKey = answerId }) } } + @JvmStatic + fun deleteVideoEntity(videoId: String) { + runOnIoThread { HistoryDatabase.instance.videoHistoryDao().deleteVideo(MyVideoEntity().apply { id = videoId }) } + } + @JvmStatic fun emptyDatabase() { runOnIoThread { HistoryDatabase.instance.clearAllTables() } diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index 08893ab6d6..d58aeb87be 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -14,6 +14,7 @@ import com.gh.common.dialog.DeviceRemindDialog; import com.gh.common.dialog.ReserveDialogFragment; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; +import com.gh.common.history.HistoryHelper; import com.gh.common.repository.ReservationRepository; import com.gh.download.DownloadManager; import com.gh.download.dialog.DownloadDialog; @@ -437,7 +438,15 @@ public class DownloadItemUtils { if (gameEntity.getApk().size() == 0 && gameEntity.getH5Link() != null) { downloadBtn.setOnClickListener(v -> { MtaHelper.onEvent("H5页面", "入口", "列表页_" + gameEntity.getName()); - Intent i = WebActivity.getIntentForWebGame(context, gameEntity.getH5Link().getLink(), gameEntity.getName(), "play".equals(gameEntity.getH5Link().getType())); + + LinkEntity linkEntity = gameEntity.getH5Link(); + + boolean isPlay = "play".equals(linkEntity.getType()); // 是否为开始玩 + if (isPlay) { + HistoryHelper.insertGameEntity(gameEntity); + } + + Intent i = WebActivity.getIntentForWebGame(context, gameEntity.getH5Link().getLink(), gameEntity.getName(), isPlay); context.startActivity(i); }); } else if (gameEntity.getApk().size() == 1) { diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 7abfbce134..3baeea24a3 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -2,16 +2,15 @@ package com.gh.download; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.preference.PreferenceManager; import android.text.TextUtils; import com.gh.common.AppExecutor; import com.gh.common.exposure.ExposureEvent; +import com.gh.common.history.HistoryHelper; import com.gh.common.util.AppDebugConfig; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DeviceUtils; @@ -58,8 +57,6 @@ import java.util.concurrent.LinkedBlockingQueue; import androidx.annotation.Nullable; import androidx.collection.ArrayMap; -import static android.os.Build.MANUFACTURER; - public class DownloadManager implements DownloadStatusListener { private static DownloadManager mInstance; @@ -288,6 +285,7 @@ public class DownloadManager implements DownloadStatusListener { if (isSubscribe) { DownloadManager.getInstance(context).subscribe(downloadEntity); } else { + HistoryHelper.insertGameEntity(gameEntity); DownloadManager.getInstance(context).add(downloadEntity); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java index b40809e664..82730726da 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java @@ -5,16 +5,13 @@ import android.content.Intent; import android.text.TextUtils; import android.view.View; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.FragmentActivity; - import com.gh.common.dialog.CertificationDialog; import com.gh.common.dialog.DeviceRemindDialog; import com.gh.common.dialog.GameOffServiceDialogFragment; import com.gh.common.dialog.ReserveDialogFragment; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; +import com.gh.common.history.HistoryHelper; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; @@ -44,6 +41,10 @@ import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentActivity; + /** * Created by khy on 27/06/17. * 详情页面下载ViewHolder @@ -245,7 +246,13 @@ public class DetailViewHolder { case H5_GAME: MtaHelper.onEvent("H5页面", "入口", "详情页_" + mGameEntity.getName()); LinkEntity linkEntity = mGameEntity.getH5Link(); - Intent i = new Intent(WebActivity.getIntentForWebGame(mViewHolder.context, linkEntity.getLink(), mGameEntity.getName(), "play".equals(linkEntity.getType()))); + + boolean isPlay = "play".equals(linkEntity.getType()); // 是否为开始玩 + if (isPlay) { + HistoryHelper.insertGameEntity(mGameEntity); + } + + Intent i = new Intent(WebActivity.getIntentForWebGame(mViewHolder.context, linkEntity.getLink(), mGameEntity.getName(),isPlay)); mViewHolder.context.startActivity(i); break; } diff --git a/app/src/main/java/com/gh/gamecenter/collection/AnswerAdapter.java b/app/src/main/java/com/gh/gamecenter/collection/AnswerAdapter.java index 88a49fc1ba..50bd74b232 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/AnswerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/collection/AnswerAdapter.java @@ -1,10 +1,6 @@ package com.gh.gamecenter.collection; import android.content.Context; - -import androidx.recyclerview.widget.RecyclerView; -import kotlin.Pair; - import android.view.View; import android.view.ViewGroup; @@ -12,22 +8,25 @@ import com.gh.base.OnListClickListener; import com.gh.common.constant.ItemViewType; import com.gh.common.syncpage.ISyncAdapterHandler; import com.gh.common.util.CollectionUtils; +import com.gh.common.util.DialogHelper; import com.gh.common.util.DialogUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.LoadType; import com.gh.gamecenter.databinding.CommunityAnswerItemBinding; import com.gh.gamecenter.qa.answer.CommunityAnswerItemViewHolder; import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; import com.gh.gamecenter.qa.entity.AnswerEntity; import com.gh.gamecenter.qa.entity.Questions; -import com.gh.gamecenter.qa.questions.detail.AnswerViewHolder; -import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; import com.lightgame.utils.Utils; import org.jetbrains.annotations.Nullable; +import androidx.recyclerview.widget.RecyclerView; +import kotlin.Pair; + /** * Created by khy on 22/12/17. */ @@ -39,14 +38,12 @@ public class AnswerAdapter extends ListAdapter implements ISyncAda private AnswerViewModel mListViewModel; private String mEntrance; - private AnswerFragment.Type mType; - public AnswerAdapter(Context context, AnswerViewModel viewModel, AnswerFragment.Type type, OnListClickListener listClickListener, String entrance) { + public AnswerAdapter(Context context, AnswerViewModel viewModel, OnListClickListener listClickListener, String entrance) { super(context); mListViewModel = viewModel; mListClickListener = listClickListener; mEntrance = entrance; - this.mType = type; } @Override @@ -77,37 +74,45 @@ public class AnswerAdapter extends ListAdapter implements ISyncAda CommunityAnswerItemViewHolder viewHolder = (CommunityAnswerItemViewHolder) holder; AnswerEntity entity = mEntityList.get(position); String path; - if (mType == AnswerFragment.Type.COLLECTION) { + if (AnswerFragment.COLLECTION.equals(mListViewModel.getType())) { path = "我的收藏-回答列表"; - } else if (mType == AnswerFragment.Type.HISTORY) { + } else if (AnswerFragment.HISTORY.equals(mListViewModel.getType())) { path = "浏览记录-回答列表"; + viewHolder.itemView.setOnLongClickListener(v -> { + DialogHelper.showDialog(holder.itemView.getContext(), + "删除记录", + "删除浏览记录将不可回复,确定删除吗?", + "确定", + "取消", + () -> { + mListViewModel.removeHistory(entity); + }, + () -> { + }, + false, "", ""); + return false; + }); } else { path = "插入回答-收藏回答列表"; } viewHolder.bindAnswerItem(entity, mEntrance, path); - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (entity.getActive()) { - mContext.startActivity(AnswerDetailActivity.getIntent(mContext, entity.getId(), mEntrance, path)); - } else { - showDeleteDialog(entity.getId()); - } + holder.itemView.setOnClickListener(v -> { + if (entity.getActive()) { + mContext.startActivity(AnswerDetailActivity.getIntent(mContext, entity.getId(), mEntrance, path)); + } else { + showDeleteDialog(entity.getId()); + } - if (!entity.getRead()) { - entity.setRead(true); - notifyItemChanged(position); - mListViewModel.postCollectionAnswerRead(entity.getId()); - } + if (!entity.getRead()) { + entity.setRead(true); + notifyItemChanged(position); + mListViewModel.postCollectionAnswerRead(entity.getId()); } }); - viewHolder.getBinding().title.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Questions questions = entity.getQuestions(); - mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.getId(), mEntrance, path)); - } + viewHolder.getBinding().title.setOnClickListener(v -> { + Questions questions = entity.getQuestions(); + mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.getId(), mEntrance, path)); }); break; case ItemViewType.ITEM_FOOTER: diff --git a/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java b/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java index ad472eee18..18c9066968 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java @@ -1,8 +1,10 @@ package com.gh.gamecenter.collection; +import android.os.Bundle; import android.view.View; import com.gh.common.util.CollectionUtils; +import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; @@ -24,35 +26,26 @@ import androidx.recyclerview.widget.RecyclerView; public class AnswerFragment extends ListFragment { private AnswerAdapter mAdapter; - private Type mType; + private String mType; - public static AnswerFragment getInstance(Type type) { - AnswerFragment fragment = new AnswerFragment(); - fragment.mType = type; - return fragment; - } + public static String COLLECTION = "collection"; + public static String COLLECTION_ANSWER = "collection_answer"; + public static String HISTORY = "history"; @Override protected ListAdapter provideListAdapter() { - return mAdapter == null ? mAdapter = new AnswerAdapter(getContext(), mListViewModel, mType, this, mEntrance) : mAdapter; + return mAdapter == null ? mAdapter = new AnswerAdapter(getContext(), mListViewModel, this, mEntrance) : mAdapter; } - /*@Override - public Single> provideDataSingle(int page) { - if (mType == Type.COLLECTION) { - return Single.fromObservable(RetrofitManager.getInstance(getContext()).getApi().getCollectionAnswer(UserManager.getInstance().getUserId(), page)); - } else { - return HistoryDatabase.Companion.getInstance().answerDao().getAnswersWithOffset(20, (page - 1) * 20); - } - }*/ + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + mType = getArguments().getString(EntranceUtils.KEY_TYPE, COLLECTION); + super.onCreate(savedInstanceState); + } @Override protected AnswerViewModel provideListViewModel() { AnswerViewModel viewModel = ViewModelProviders.of(this).get(AnswerViewModel.class); - // TODO 因为 mType 是从外面传进来的,所以在应用回收重构时会为空,这里设置为 Type.Collection 只是为了不闪退,会影响逻辑(譬如当前类型为历史的时候) - if (mType == null) { - mType = Type.COLLECTION; - } viewModel.setType(mType); return viewModel; } @@ -74,14 +67,6 @@ public class AnswerFragment extends ListFragment } } - public enum Type { - COLLECTION, - - COLLECTION_ANSWER, - - HISTORY - } - @Override protected boolean addSyncPageObserver() { return true; diff --git a/app/src/main/java/com/gh/gamecenter/collection/AnswerViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/AnswerViewModel.kt index e35dbfb7ce..3e282e0fab 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/AnswerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/AnswerViewModel.kt @@ -2,8 +2,11 @@ package com.gh.gamecenter.collection import android.annotation.SuppressLint import android.app.Application +import com.gh.common.AppExecutor import com.gh.common.history.HistoryDatabase +import com.gh.common.history.HistoryHelper import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.baselist.LoadType import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.qa.entity.AnswerEntity import com.gh.gamecenter.retrofit.BiResponse @@ -18,14 +21,14 @@ class AnswerViewModel(application: Application) : ListViewModel>? { return null } override fun provideDataSingle(page: Int): Single> { - return if (type == AnswerFragment.Type.COLLECTION) { + return if (type == AnswerFragment.COLLECTION) { Single.fromObservable(mApi.getCollectionAnswer(UserManager.getInstance().userId, page)) } else { if (page > 5) { @@ -33,7 +36,6 @@ class AnswerViewModel(application: Application) : ListViewModel { private OnListClickListener mListListener; + private ArticleViewModel mViewModel; - public ArticleAdapter(Context context, OnListClickListener listListener) { + public ArticleAdapter(Context context, ArticleViewModel viewModel, OnListClickListener listListener) { super(context); + mViewModel = viewModel; mListListener = listListener; } @@ -103,12 +106,15 @@ public class ArticleAdapter extends ListAdapter { switch (getItemViewType(position)) { case ItemViewType.NEWS_IMAGE1: initNewsImage1ViewHolder((NewsImage1ViewHolder) holder, position); + addLongClickListenerIfNeed(holder, mEntityList.get(position)); break; case ItemViewType.NEWS_IMAGE2: initNewsImage2ViewHolder((NewsImage2ViewHolder) holder, position); + addLongClickListenerIfNeed(holder, mEntityList.get(position)); break; case ItemViewType.NEWS_IMAGE3: initNewsImage3ViewHolder((NewsImage3ViewHolder) holder, position); + addLongClickListenerIfNeed(holder, mEntityList.get(position)); break; case ItemViewType.LOADING: FooterViewHolder footerViewHolder = (FooterViewHolder) holder; @@ -118,6 +124,24 @@ public class ArticleAdapter extends ListAdapter { } } + private void addLongClickListenerIfNeed(RecyclerView.ViewHolder holder, NewsEntity newsEntity) { + if (ArticleFragment.HISTORY.equals(mViewModel.type)) { + holder.itemView.setOnLongClickListener(v -> { + DialogHelper.showDialog(holder.itemView.getContext(), + "删除记录", + "删除浏览记录将不可回复,确定删除吗?", + "确定", + "取消", + () -> { + mViewModel.removeHistory(newsEntity); + }, + () -> { + }, + false, "", ""); + return false; + }); + } + } @Override public int getItemCount() { diff --git a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java index 749a46a920..1826012888 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java @@ -1,10 +1,12 @@ package com.gh.gamecenter.collection; +import android.os.Bundle; import android.view.View; import com.gh.common.util.CollectionUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.baselist.ListAdapter; @@ -16,31 +18,39 @@ import com.gh.gamecenter.eventbus.EBCollectionChanged; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import androidx.annotation.Nullable; + /** * Created by khy on 18/07/17. */ public class ArticleFragment extends ListFragment { - private Type mType; + private String mType; private ArticleAdapter mAdapter; + private ArticleViewModel mViewModel; - public static ArticleFragment getInstance(Type type) { - ArticleFragment fragment = new ArticleFragment(); - fragment.mType = type; - return fragment; - } + public static String COLLECTION = "collection"; + public static String HISTORY = "history"; @Override - protected ArticleViewModel provideListViewModel() { - ArticleViewModel viewModel = super.provideListViewModel(); - viewModel.type = mType; - return viewModel; + public void onCreate(@Nullable Bundle savedInstanceState) { + mType = getArguments().getString(EntranceUtils.KEY_TYPE, COLLECTION); + super.onCreate(savedInstanceState); } @Override protected ListAdapter provideListAdapter() { - return mAdapter == null ? mAdapter = new ArticleAdapter(getContext(), this) : mAdapter; + return mAdapter == null ? mAdapter = new ArticleAdapter(getContext(), mViewModel,this) : mAdapter; + } + + @Override + protected ArticleViewModel provideListViewModel() { + if (mViewModel == null) { + mViewModel = super.provideListViewModel(); + } + mViewModel.type = mType; + return mViewModel; } // 收藏事件 @@ -55,7 +65,7 @@ public class ArticleFragment extends ListFragment public void onListClick(View view, int position, Object data) { NewsEntity newsEntity = (NewsEntity) data; - if (mType == Type.COLLECTION) { + if (COLLECTION.equals(mType)) { if (!newsEntity.getActive()) { showDeleteDialog(newsEntity.getId()); return; @@ -89,10 +99,4 @@ public class ArticleFragment extends ListFragment } }), null); } - - public enum Type { - COLLECTION, - - HISTORY - } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java b/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java index c05333e76a..d65e1dcddb 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java @@ -2,9 +2,12 @@ package com.gh.gamecenter.collection; import android.app.Application; +import com.gh.common.AppExecutor; import com.gh.common.history.HistoryDatabase; +import com.gh.common.history.HistoryHelper; import com.gh.common.util.UrlFilterUtils; import com.gh.gamecenter.baselist.ListViewModel; +import com.gh.gamecenter.baselist.LoadType; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.entity.ViewsEntity; import com.gh.gamecenter.info.NewsViewsRepository; @@ -25,7 +28,7 @@ import io.reactivex.Single; public class ArticleViewModel extends ListViewModel { - public ArticleFragment.Type type; + public String type; NewsViewsRepository mNewsViewsRepository = new NewsViewsRepository<>(); @@ -76,7 +79,7 @@ public class ArticleViewModel extends ListViewModel { @Override public Single> provideDataSingle(int page) { - if (type == ArticleFragment.Type.COLLECTION) { + if (ArticleFragment.COLLECTION.equals(type)) { return Single.fromObservable(RetrofitManager.getInstance(getApplication()).getApi().getCollectionArticle(UserManager.getInstance().getUserId(), page)); } else { if (page > 5) { @@ -90,4 +93,20 @@ public class ArticleViewModel extends ListViewModel { public Observable> provideDataObservable(int page) { return null; } + + public void removeHistory(NewsEntity newsEntity) { + List originList = mResultLiveData.getValue(); + if (originList != null) { + HistoryHelper.deleteNewsEntity(newsEntity.getId()); + + originList.remove(newsEntity); + if (originList.size() == 0) { + AppExecutor.getUiExecutor().executeWithDelay(() -> { + load(LoadType.REFRESH); + }, 100); + } else { + mResultLiveData.postValue(originList); + } + } + } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java index 313955fea9..b0b4fcaae2 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java @@ -40,10 +40,10 @@ public class CollectionWrapperFragment extends BaseFragment_TabLayout { @Override protected void initFragmentList(List fragments) { - fragments.add(AnswerFragment.getInstance(AnswerFragment.Type.COLLECTION).with(getArguments())); - fragments.add(CommunityArticleFragment.getInstance(CommunityArticleFragment.Type.COLLECTION).with(getArguments())); + fragments.add(new AnswerFragment().with(getArguments())); + fragments.add(new CommunityArticleFragment().with(getArguments())); fragments.add(new ToolsFragment().with(getArguments())); - fragments.add(ArticleFragment.getInstance(ArticleFragment.Type.COLLECTION).with(getArguments())); + fragments.add(new ArticleFragment().with(getArguments())); Bundle arguments = getArguments(); if (arguments != null) diff --git a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt index a0db3e3c63..d58ba7f436 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt @@ -6,18 +6,18 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType import com.gh.common.syncpage.ISyncAdapterHandler -import com.gh.common.util.* +import com.gh.common.util.DialogHelper +import com.gh.common.util.DialogUtils +import com.gh.common.util.consume import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.databinding.CommunityAnswerItemBinding import com.gh.gamecenter.qa.answer.CommunityAnswerItemViewHolder import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity -import com.gh.gamecenter.qa.entity.AnswerEntity import com.gh.gamecenter.qa.entity.ArticleEntity class CommunityArticleAdapter(context: Context, - val mType: CommunityArticleFragment.Type, private val mViewModel: CommunityArticleViewModel, private val mEntrance: String) : ListAdapter(context), ISyncAdapterHandler { @@ -46,13 +46,29 @@ class CommunityArticleAdapter(context: Context, override fun getItemCount(): Int = if (mEntityList.size == 0) 0 else mEntityList.size + 1 - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is CommunityAnswerItemViewHolder) { - val path = if (mType == CommunityArticleFragment.Type.COLLECTION) "我的收藏-文章列表" else "浏览记录-文章列表" + var path = "" val entity = mEntityList[position] - holder.bindArticleItem(entity, mEntrance, path) + if (mViewModel.type == CommunityArticleFragment.Type.COLLECTION.value) { + path = "我的收藏-文章列表" + } else { + path = "浏览记录-文章列表" + holder.itemView.setOnLongClickListener { + consume { + DialogHelper.showDialog(holder.binding.root.context, + "删除记录", + "删除浏览记录将不可回复,确定删除吗?", + "确定", + "取消", { + mViewModel.removeHistory(entity) + }) + } + } + } + + holder.bindArticleItem(entity, mEntrance, path) holder.itemView.setOnClickListener { if (entity.active) { mContext.startActivity(ArticleDetailActivity.getIntent(mContext, entity.community, entity.id, mEntrance, path)) diff --git a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleFragment.kt b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleFragment.kt index 9ca1e06113..7b9c945bb7 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleFragment.kt @@ -1,8 +1,10 @@ package com.gh.gamecenter.collection +import android.os.Bundle import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView import com.gh.common.util.CollectionUtils +import com.gh.common.util.EntranceUtils import com.gh.gamecenter.baselist.ListFragment import com.gh.gamecenter.baselist.LoadType import com.gh.gamecenter.eventbus.EBCollectionChanged @@ -12,25 +14,35 @@ import org.greenrobot.eventbus.ThreadMode class CommunityArticleFragment : ListFragment() { - private var mType = Type.COLLECTION + private var mType = Type.COLLECTION.value + private var mViewModel: CommunityArticleViewModel? = null private var mAdapter: CommunityArticleAdapter? = null + override fun onCreate(savedInstanceState: Bundle?) { + mType = arguments?.getString(EntranceUtils.KEY_TYPE, Type.COLLECTION.value) ?: Type.COLLECTION.value + super.onCreate(savedInstanceState) + } + override fun provideListAdapter(): CommunityArticleAdapter { if (mAdapter == null) { - mAdapter = CommunityArticleAdapter(requireContext(), mType, mListViewModel, mEntrance) + mAdapter = CommunityArticleAdapter(requireContext(), mViewModel!!, mEntrance) } return mAdapter!! } override fun provideListViewModel(): CommunityArticleViewModel { - return ViewModelProviders.of(this).get(CommunityArticleViewModel::class.java).apply { type = mType } + if (mViewModel == null) { + mViewModel = ViewModelProviders.of(this).get(CommunityArticleViewModel::class.java).apply { type = mType } + } + + return mViewModel!! } // 收藏事件 @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(changed: EBCollectionChanged) { if (changed.collectionType == CollectionUtils.CollectionType.communityArticle - && mType == Type.COLLECTION) { + && mType == Type.COLLECTION.value) { mListViewModel.load(LoadType.REFRESH) } } @@ -43,18 +55,9 @@ class CommunityArticleFragment : ListFragment(application) { - var type: CommunityArticleFragment.Type = CommunityArticleFragment.Type.COLLECTION + var type: String = CommunityArticleFragment.Type.COLLECTION.value override fun provideDataObservable(page: Int): Observable>? { return null } override fun provideDataSingle(page: Int): Single> { - return if (type == CommunityArticleFragment.Type.COLLECTION) { + return if (type == CommunityArticleFragment.Type.COLLECTION.value) { Single.fromObservable(RetrofitManager.getInstance(getApplication()).api.getCollectionCommunityArticle(UserManager.getInstance().userId, page)) } else { if (page > 5) { @@ -43,6 +46,18 @@ class CommunityArticleViewModel(application: Application) : ListViewModel>(mListLiveData) { mResultLiveData.postValue(it) } } + fun removeHistory(articleEntity: ArticleEntity) { + mResultLiveData.value?.let { + HistoryHelper.deleteArticleEntity(articleEntity.id) + + it.remove(articleEntity) + if (it.size == 0) { + AppExecutor.uiExecutor.executeWithDelay(Runnable { load(LoadType.REFRESH) }, 100) + } else { + mResultLiveData.postValue(it) + } + } + } fun deleteCollection(communityId: String, articleId: String) { RetrofitManager.getInstance(getApplication()).api diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt index 7822f35c1b..1b14f67b84 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt @@ -5,20 +5,17 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType -import com.gh.common.util.DirectUtils -import com.gh.common.util.ImageUtils -import com.gh.common.util.toSimpleCount +import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter -import com.gh.gamecenter.baselist.NormalListViewModel import com.gh.gamecenter.databinding.VideoItemBinding import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.video.VideoItemViewHolder import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel class VideoAdapter(context: Context, - val mViewModel: NormalListViewModel, val mVideoStyle: String) : ListAdapter(context) { + val mViewModel: VideoViewModel, val mVideoStyle: String) : ListAdapter(context) { override fun getItemViewType(position: Int): Int { if (position == itemCount - 1) return ItemViewType.ITEM_FOOTER return ItemViewType.ITEM_BODY @@ -55,6 +52,18 @@ class VideoAdapter(context: Context, DirectUtils.directToVideoDetail(mContext, entity.id, VideoDetailContainerViewModel.Location.VIDEO_HOT.value, false, path = getPath()) } } + + holder.itemView.setOnLongClickListener { + consume { + DialogHelper.showDialog(holder.binding.root.context, + "删除记录", + "删除浏览记录将不可回复,确定删除吗?", + "确定", + "取消", { + mViewModel.removeHistory(entity) + }) + } + } } else if (holder is FooterViewHolder) { holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) } diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt index c96878f9f7..becad11264 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt @@ -2,30 +2,22 @@ package com.gh.gamecenter.collection import android.os.Bundle import android.view.View -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.gh.common.constant.Config -import com.gh.common.history.HistoryDatabase import com.gh.common.util.dip2px +import com.gh.common.util.viewModelProvider import com.gh.common.view.GridSpacingItemDecoration import com.gh.gamecenter.baselist.ListFragment -import com.gh.gamecenter.baselist.LoadStatus -import com.gh.gamecenter.baselist.NormalListViewModel import com.gh.gamecenter.entity.MyVideoEntity -import com.gh.gamecenter.manager.UserManager -import com.gh.gamecenter.retrofit.RetrofitManager -import com.halo.assistant.HaloApp -import io.reactivex.Observable -import io.reactivex.Single -class VideoFragment : ListFragment>() { +class VideoFragment : ListFragment() { private var mAdapter: VideoAdapter? = null + private var mViewModel: VideoViewModel? = null private lateinit var mVideoStyle: String override fun provideListAdapter(): VideoAdapter { if (mAdapter == null) { - mAdapter = VideoAdapter(context!!, mListViewModel, mVideoStyle) + mAdapter = VideoAdapter(requireContext(), mViewModel!!, mVideoStyle) } return mAdapter!! } @@ -54,27 +46,12 @@ class VideoFragment : ListFragment { - val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel - } - - override fun provideDataObservable(page: Int): Observable>? { - if (mVideoStyle == VideoStyle.COLLECT.value) { - return RetrofitManager.getInstance(context).api.getCollectionVideo(UserManager.getInstance().userId, page, Config.VIDEO_PAGE_SIZE) + override fun provideListViewModel(): VideoViewModel { + if (mViewModel == null) { + mViewModel = viewModelProvider() } - return null - } - - override fun provideDataSingle(page: Int): Single>? { - if (page > 5) { - mAdapter?.loadChange(LoadStatus.LIST_OVER) - return null - } - if (mVideoStyle == VideoStyle.BROWSING_HISTORY.value) { - return HistoryDatabase.instance.videoHistoryDao().getVideoWithOffset(20, (page - 1) * 20) - } - return null + mViewModel?.type = mVideoStyle + return mViewModel!! } enum class VideoStyle(val value: String) { diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt new file mode 100644 index 0000000000..ad3400ce1d --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt @@ -0,0 +1,46 @@ +package com.gh.gamecenter.collection + +import android.app.Application +import com.gh.common.AppExecutor +import com.gh.common.constant.Config +import com.gh.common.history.HistoryDatabase +import com.gh.common.history.HistoryHelper +import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.baselist.LoadType +import com.gh.gamecenter.entity.MyVideoEntity +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.retrofit.RetrofitManager +import io.reactivex.Observable +import io.reactivex.Single + +class VideoViewModel(application: Application) : ListViewModel(application) { + + var type = "" + + override fun provideDataObservable(page: Int): Observable>? { + if (type == VideoFragment.VideoStyle.COLLECT.value) { + return RetrofitManager.getInstance(getApplication()).api.getCollectionVideo(UserManager.getInstance().userId, page, Config.VIDEO_PAGE_SIZE) + } + return null + } + + override fun provideDataSingle(page: Int): Single>? { + if (page > 5) { + return Single.create { it.onSuccess(arrayListOf()) } + } + if (type == VideoFragment.VideoStyle.BROWSING_HISTORY.value) { + return HistoryDatabase.instance.videoHistoryDao().getVideoWithOffset(20, (page - 1) * 20) + } + return null + } + + override fun mergeResultLiveData() { + mResultLiveData.addSource(mListLiveData) { mResultLiveData.postValue(it) } + } + + fun removeHistory(myVideoEntity: MyVideoEntity) { + HistoryHelper.deleteVideoEntity(myVideoEntity.id) + AppExecutor.uiExecutor.executeWithDelay(Runnable { load(LoadType.REFRESH) }, 100) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index 313c564abf..882b09298b 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -8,17 +8,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import androidx.collection.ArrayMap; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.RecyclerView.ViewHolder; - import com.gh.common.AppExecutor; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureSource; import com.gh.common.exposure.ExposureType; import com.gh.common.exposure.ExposureUtils; import com.gh.common.exposure.IExposable; +import com.gh.common.history.HistoryHelper; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; @@ -65,6 +61,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import androidx.collection.ArrayMap; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.ViewHolder; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -549,6 +549,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen if (isSubscribe) { DownloadManager.getInstance(mContext).subscribe(downloadEntity); } else { + HistoryHelper.insertGameEntity(updateEntity); DownloadManager.getInstance(mContext).add(downloadEntity); } diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt index aa8e129038..0bcc3a4149 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt @@ -3,9 +3,7 @@ package com.gh.gamecenter.history import android.content.Context import android.view.ViewGroup import com.gh.common.constant.ItemViewType -import com.gh.common.util.DownloadItemUtils -import com.gh.common.util.StringUtils -import com.gh.common.util.visibleIf +import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder @@ -64,6 +62,18 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa "(浏览记录:游戏)", StringUtils.buildString("浏览记录", ":", gameEntity.name)) DownloadItemUtils.updateItemWithViewOnlyStyle(GameViewHolder(holder.binding)) + + holder.itemView.setOnLongClickListener { + consume { + DialogHelper.showDialog(holder.binding.root.context, + "删除记录", + "删除浏览记录将不可回复,确定删除吗?", + "确定", + "取消", { + mViewModel.removeHistory(gameEntity) + }) + } + } } is FooterViewHolder -> { holder.initItemPadding() diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListViewModel.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListViewModel.kt index ff27383ed1..a06a77a385 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListViewModel.kt @@ -1,8 +1,11 @@ package com.gh.gamecenter.history import android.app.Application +import com.gh.common.AppExecutor import com.gh.common.history.HistoryDatabase +import com.gh.common.history.HistoryHelper import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.baselist.LoadType import com.gh.gamecenter.entity.GameEntity import io.reactivex.Observable import io.reactivex.Single @@ -27,6 +30,19 @@ class HistoryGameListViewModel(application: Application) : ListViewModel) { + tabTitleList.add(getString(R.string.main_game)) + tabTitleList.add(getString(R.string.video)) tabTitleList.add(getString(R.string.answer)) tabTitleList.add(getString(R.string.collection_article)) tabTitleList.add(getString(R.string.collection_info)) - tabTitleList.add(getString(R.string.main_game)) - tabTitleList.add(getString(R.string.video)) } override fun initFragmentList(fragments: MutableList) { - fragments.add(AnswerFragment.getInstance(AnswerFragment.Type.HISTORY).with(arguments)) - fragments.add(CommunityArticleFragment.getInstance(CommunityArticleFragment.Type.HISTORY).with(arguments)) - fragments.add(ArticleFragment.getInstance(ArticleFragment.Type.HISTORY).with(arguments)) fragments.add(HistoryGameListFragment().with(arguments)) fragments.add(VideoFragment().with(arguments?.apply { putString("videoStyle", VideoFragment.VideoStyle.BROWSING_HISTORY.value) })) + fragments.add(AnswerFragment().with(arguments?.apply { putString(EntranceUtils.KEY_TYPE, AnswerFragment.HISTORY) })) + fragments.add(CommunityArticleFragment().with(arguments?.apply { putString(EntranceUtils.KEY_TYPE, CommunityArticleFragment.Type.HISTORY.value) })) + fragments.add(ArticleFragment().with(arguments?.apply { putString(EntranceUtils.KEY_TYPE, ArticleFragment.HISTORY) })) } override fun onPageSelected(position: Int) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt index c32b803b22..23b2cd1930 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt @@ -3,7 +3,6 @@ package com.gh.gamecenter.qa.editor import android.app.Activity import android.content.Context import android.content.Intent -import androidx.recyclerview.widget.RecyclerView import android.view.View import android.view.ViewGroup import com.gh.common.constant.ItemViewType @@ -16,7 +15,6 @@ import com.gh.gamecenter.qa.questions.detail.AnswerViewHolder class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdapter(context) { - override fun setListData(updateData: MutableList?) { if (updateData != null) { for (data in updateData) { @@ -50,7 +48,7 @@ class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdap ItemViewType.ITEM_BODY -> { val answerViewHolder = holder as AnswerViewHolder val entity = mEntityList[position] - answerViewHolder.initCollectionAnswerViewHolder(mContext, entity, mEntrance, AnswerFragment.Type.COLLECTION_ANSWER) + answerViewHolder.initCollectionAnswerViewHolder(mContext, entity, mEntrance, AnswerFragment.COLLECTION_ANSWER) answerViewHolder.mUsericon.setOnClickListener { selectAndBack(entity) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt index 52c2965d73..ed85877375 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt @@ -8,7 +8,7 @@ class AnswerFragment : ListFragment() { private var mAdapter: AnswerAdapter? = null override fun provideListAdapter(): AnswerAdapter { - if (mAdapter == null) mAdapter = AnswerAdapter(context!!, mEntrance) + if (mAdapter == null) mAdapter = AnswerAdapter(requireContext(), mEntrance) return mAdapter!! } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/detail/AnswerViewHolder.java b/app/src/main/java/com/gh/gamecenter/qa/questions/detail/AnswerViewHolder.java index 2f3c1e37a0..f38fc4a1eb 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/detail/AnswerViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/detail/AnswerViewHolder.java @@ -3,17 +3,12 @@ package com.gh.gamecenter.qa.questions.detail; import android.content.Context; import android.graphics.Paint; import android.view.View; -import android.view.ViewGroup; import android.widget.TextView; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.core.content.ContextCompat; - import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseRecyclerViewHolder; import com.gh.base.OnListClickListener; import com.gh.common.util.DirectUtils; -import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.MtaHelper; import com.gh.common.util.NewsUtils; @@ -21,14 +16,13 @@ import com.gh.common.util.NumberUtils; import com.gh.common.view.DrawableView; import com.gh.gamecenter.R; import com.gh.gamecenter.collection.AnswerFragment; -import com.gh.gamecenter.collection.CommunityArticleFragment; import com.gh.gamecenter.entity.UserEntity; import com.gh.gamecenter.qa.entity.AnswerEntity; import com.gh.gamecenter.qa.entity.CommunityVideoEntity; -import com.lightgame.utils.Utils; import java.util.List; +import androidx.core.content.ContextCompat; import butterknife.BindView; /** @@ -117,7 +111,7 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder { skipPersonalHome(entity, entrance, path); } - public void initCollectionAnswerViewHolder(Context context, AnswerEntity entity, String entrance, AnswerFragment.Type mType) { + public void initCollectionAnswerViewHolder(Context context, AnswerEntity entity, String type, String entrance) { setClickData(entity); if (entity.getActive()) { mContent.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG); @@ -149,9 +143,9 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder { badgeNameTv.setVisibility(View.GONE); } String key; - if (mType == AnswerFragment.Type.COLLECTION) { + if (AnswerFragment.COLLECTION.equals(type)) { key = "我的收藏-回答列表"; - } else if (mType == AnswerFragment.Type.HISTORY) { + } else if (AnswerFragment.HISTORY.equals(type)) { key = "浏览记录-回答列表"; } else { key = "插入回答-收藏回答列表"; diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java index b2079f9955..4257ad10a8 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java @@ -1,7 +1,6 @@ package com.halo.assistant.fragment; import android.app.Dialog; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; @@ -57,12 +56,9 @@ import java.io.File; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; - import butterknife.BindView; import butterknife.OnClick; import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable;