From 53618e0117406f2bf744da19cdc3166c2a3d74e4 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 10 Sep 2018 17:49:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=A4=BE=E5=8C=BA=E6=90=9C=E7=B4=A2=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2=E5=8E=86=E5=8F=B2=202.?= =?UTF-8?q?=E5=8F=8D=E9=A6=8830=E5=88=86=E9=92=9F=E5=86=85=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E8=BF=87=E5=86=85=E5=AE=B9=E5=AE=8C=E5=85=A8=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E5=8F=8D=E9=A6=88=EF=BC=8C=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=8F=90=E9=86=92=203.=E5=A4=9A=E7=A7=8D?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=9C=B0=E6=96=B9?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BD=8E=E7=89=88=E6=9C=AC=E5=85=BC?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/view/WelcomeDialog.kt | 8 +- .../com/gh/gamecenter/SuggestionActivity.java | 28 ++++--- .../gh/gamecenter/db/AskSearchHistoryDao.java | 77 +++++++++++++++++++ .../com/gh/gamecenter/db/DatabaseHelper.java | 9 ++- .../db/info/AskSearchHistoryInfo.java | 59 ++++++++++++++ .../gh/gamecenter/game/GameFragmentAdapter.kt | 6 ++ .../gh/gamecenter/message/KeFuFragment.java | 5 ++ .../newsdetail/NewsDetailAdapter.java | 3 + .../personalhome/PersonalHomeAdapter.kt | 9 ++- .../qa/search/AskSearchActivity.java | 59 +++++++++----- .../qa/search/AskSearchFragment.java | 26 +------ .../qa/search/base/BaseAskSearchFragment.kt | 3 + .../qa/search/history/HistoryFragment.kt | 50 ++++++++++++ .../search/history/HistoryFragmentAdapter.kt | 68 ++++++++++++++++ .../subject/refactor/SubjectAdapter.kt | 2 + .../layout/fragment_ask_search_history.xml | 66 ++++++++++++++++ 16 files changed, 415 insertions(+), 63 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/db/AskSearchHistoryDao.java create mode 100644 app/src/main/java/com/gh/gamecenter/db/info/AskSearchHistoryInfo.java create mode 100644 app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragment.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragmentAdapter.kt create mode 100644 app/src/main/res/layout/fragment_ask_search_history.xml diff --git a/app/src/main/java/com/gh/common/view/WelcomeDialog.kt b/app/src/main/java/com/gh/common/view/WelcomeDialog.kt index f9cc6642c9..14a816a52c 100644 --- a/app/src/main/java/com/gh/common/view/WelcomeDialog.kt +++ b/app/src/main/java/com/gh/common/view/WelcomeDialog.kt @@ -10,10 +10,7 @@ import com.gh.base.fragment.BaseDialogFragment import com.gh.common.TimeElapsedHelper import com.gh.common.constant.Constants.SP_LAST_OPENING_ID import com.gh.common.constant.Constants.SP_LAST_OPENING_TIME -import com.gh.common.util.DataUtils -import com.gh.common.util.DirectUtils -import com.gh.common.util.EntranceUtils -import com.gh.common.util.edit +import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.databinding.DialogWelcomeBinding import com.gh.gamecenter.entity.CommunityEntity @@ -64,8 +61,9 @@ class WelcomeDialog : BaseDialogFragment() { DirectUtils.directToQqConversation(context!!, mWelcomeEntity?.link!!) } EntranceUtils.HOST_COMMUNITY -> { - DirectUtils.directToCommunity(context!!, CommunityEntity( mWelcomeEntity?.link!!, mWelcomeEntity?.text!!)) + DirectUtils.directToCommunity(context!!, CommunityEntity(mWelcomeEntity?.link!!, mWelcomeEntity?.text!!)) } + else -> DialogUtils.showLowVersionDialog(context) } mDismissByClickImage = true diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 6f108b1828..db0254eee9 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -51,7 +51,6 @@ import com.gh.gamecenter.suggest.SuggestSelectGameAdapter; import com.gh.gamecenter.suggest.SuggestType; import com.google.gson.Gson; import com.halo.assistant.HaloApp; -import com.lightgame.config.CommonDebug; import com.lightgame.utils.Util_System_Keyboard; import com.lightgame.utils.Util_System_Phone_State; import com.lightgame.utils.Utils; @@ -630,20 +629,29 @@ public class SuggestionActivity extends BaseActivity implements OnRequestCallBac @Override public void onFailure(HttpException e) { - try { - if (CommonDebug.IS_DEBUG && e != null) { - String string = e.response().errorBody().string(); - Utils.log("sendSuggestion::onFailure->" + string); - } - } catch (IOException e1) { - e1.printStackTrace(); - } - if (postDialog != null) { postDialog.dismissAllowingStateLoss(); } + try { + if (e != null && e.code() == 403) { + String string = e.response().errorBody().string(); + JSONObject object = new JSONObject(string); + int code = object.getInt("code"); + if (code == 403052) { + DialogUtils.showAlertDialog(SuggestionActivity.this, "提醒", "你已经提交过相同的反馈了" + , "关闭提交", "返回修改", () -> { + setResult(SUGGEST_TYPE_REQUEST); + finish(); + }, null); + return; + } + } + } catch (Exception e1) { + e1.printStackTrace(); + } + toast("提交失败,请检查网络状态"); } }); diff --git a/app/src/main/java/com/gh/gamecenter/db/AskSearchHistoryDao.java b/app/src/main/java/com/gh/gamecenter/db/AskSearchHistoryDao.java new file mode 100644 index 0000000000..689beddfd3 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/AskSearchHistoryDao.java @@ -0,0 +1,77 @@ +package com.gh.gamecenter.db; + +import android.content.Context; + +import com.gh.gamecenter.db.info.AskSearchHistoryInfo; +import com.j256.ormlite.dao.CloseableIterator; +import com.j256.ormlite.dao.Dao; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class AskSearchHistoryDao { + + private DatabaseHelper helper; + private Dao dao; + + public AskSearchHistoryDao(Context context) { + try { + helper = DatabaseHelper.getHelper(context); + dao = helper.getDao(AskSearchHistoryInfo.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void add(String item) { + try { + dao.createOrUpdate(new AskSearchHistoryInfo(item)); + } catch (SQLException e) { + + e.printStackTrace(); + } + } + + public void delete(String item) { + try { + dao.deleteById(item); + } catch (SQLException e) { + + e.printStackTrace(); + } + } + + public void deleteAll() { + + CloseableIterator iterator = dao.iterator(); + while (iterator.hasNext()) { + try { + dao.delete(iterator.next()); + } catch (SQLException e) { + + e.printStackTrace(); + } + } + return; + } + + public List getAll() { + List history = new ArrayList(); + + try { + List his = dao.queryBuilder().orderBy("time", false).query(); + Iterator hisIterator = his.iterator(); + while (hisIterator.hasNext()) { + history.add(hisIterator.next().getItem()); + } + } catch (SQLException e) { + + e.printStackTrace(); + } + return history; + } + + +} diff --git a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java index 39021cf061..7446a8e2c6 100644 --- a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java +++ b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java @@ -6,11 +6,12 @@ import android.support.v4.util.ArrayMap; import com.gh.gamecenter.db.info.AppRunTimeInfo; import com.gh.gamecenter.db.info.AppTrafficInfo; -import com.gh.gamecenter.db.info.GameTrendsInfo; -import com.gh.gamecenter.db.info.InstallInfo; +import com.gh.gamecenter.db.info.AskSearchHistoryInfo; import com.gh.gamecenter.db.info.DataCollectionInfo; import com.gh.gamecenter.db.info.FilterInfo; import com.gh.gamecenter.db.info.GameInfo; +import com.gh.gamecenter.db.info.GameTrendsInfo; +import com.gh.gamecenter.db.info.InstallInfo; import com.gh.gamecenter.db.info.PackageInfo; import com.gh.gamecenter.db.info.SearchHistoryInfo; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; @@ -24,7 +25,7 @@ import java.sql.SQLException; public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String DATABASE_NAME = "gh_assist.db"; - private static final int DATABASE_VERSION = 11; + private static final int DATABASE_VERSION = 12; private static DatabaseHelper instance; private ArrayMap daos = new ArrayMap<>(); @@ -63,6 +64,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTable(connectionSource, PackageInfo.class); TableUtils.createTable(connectionSource, AppTrafficInfo.class); TableUtils.createTable(connectionSource, GameTrendsInfo.class); + TableUtils.createTable(connectionSource, AskSearchHistoryInfo.class); } catch (SQLException e) { e.printStackTrace(); } @@ -81,6 +83,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, PackageInfo.class, true); TableUtils.dropTable(connectionSource, AppTrafficInfo.class, true); TableUtils.dropTable(connectionSource, GameTrendsInfo.class, true); + TableUtils.dropTable(connectionSource, AskSearchHistoryInfo.class, true); onCreate(database, connectionSource); } catch (SQLException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/gamecenter/db/info/AskSearchHistoryInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/AskSearchHistoryInfo.java new file mode 100644 index 0000000000..79b8e52b04 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/info/AskSearchHistoryInfo.java @@ -0,0 +1,59 @@ +package com.gh.gamecenter.db.info; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +@DatabaseTable(tableName = "tb_search") +public class AskSearchHistoryInfo implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @DatabaseField(id = true, columnName = "item") + private String item; + + @DatabaseField(useGetSet = true, columnName = "time") + private String time; + + public AskSearchHistoryInfo() { + + } + + public AskSearchHistoryInfo(String item) { + this.item = item; + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", + Locale.getDefault()); + this.time = format.format(date); + } + + public AskSearchHistoryInfo(String item, String time) { + this.item = item; + this.time = time; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getItem() { + return item; + } + + @Override + public String toString() { + return "SearchHistoryEntity [item=" + item + ", time=" + time + "]"; + } + +} 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 8d19b0c96d..72f83fe95e 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -233,6 +233,8 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: GameDetailActivity.startGameDetailActivity(mContext, entity.link, "(推荐入口)") } else if (entity.type == EntranceUtils.HOST_COMMUNITY) { DirectUtils.directToCommunity(mContext, CommunityEntity(entity.link!!, entity.text!!)) + } else { + DialogUtils.showLowVersionDialog(mContext) } } } else if (v.id == R.id.home_subject_failure) { @@ -269,6 +271,8 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: GameDetailActivity.startGameDetailActivity(mContext, entity.link, "(推荐入口)") } else if (entity.type == EntranceUtils.HOST_COMMUNITY) { DirectUtils.directToCommunity(mContext, CommunityEntity(entity.link!!, entity.text!!)) + } else { + DialogUtils.showLowVersionDialog(mContext) } } } else { @@ -398,6 +402,8 @@ class GameFragmentAdapter(context: Context, model: GameViewModel, var blockName: mContext.startActivity(intent) } "column" -> SubjectActivity.startSubjectActivity(mContext, link, name, false, "(游戏-专题:$name-大图)") + + else -> DialogUtils.showLowVersionDialog(mContext) } } } else if (holder is GameHorizontalListViewHolder) { diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java index 09aaa681c7..390148f5d2 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java @@ -8,6 +8,7 @@ import android.text.TextUtils; import android.view.View; import com.gh.common.im.ImManager; +import com.gh.common.util.DialogUtils; import com.gh.common.util.DirectUtils; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.GameDetailActivity; @@ -110,6 +111,10 @@ public class KeFuFragment extends ListFragment { DirectUtils.directToAnswerDetail(mContext, id, StringUtils.buildString(mEntrance, "+(新闻详情[", mNewsDetailEntity.getTitle(), "])"), "文章链接"); break; + default: + DialogUtils.showLowVersionDialog(mContext); + break; } return true; } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/PersonalHomeAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/PersonalHomeAdapter.kt index a72f6467f1..9efdf0d0dd 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/PersonalHomeAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/PersonalHomeAdapter.kt @@ -13,6 +13,7 @@ import com.gh.common.util.DialogUtils import com.gh.common.util.NewsUtils import com.gh.gamecenter.R import com.gh.gamecenter.UserInfoActivity +import com.gh.gamecenter.ViewImageActivity import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.databinding.PersonalHomeItemBinding @@ -28,7 +29,6 @@ import com.gh.gamecenter.personalhome.question.PersonalQuestionActivity import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity import com.lightgame.utils.Utils -import java.util.* class PersonalHomeAdapter(context: Context, private val mListViewModel: PersonalHomeViewModel) : ListAdapter(context) { @@ -113,6 +113,13 @@ class PersonalHomeAdapter(context: Context, } } } + + userIcon.setOnClickListener { + val list = ArrayList() + list.add(personalData?.icon!!) + mContext.startActivity(ViewImageActivity.getViewImageIntent(mContext, list, 0, "个人主页")) + + } userFollowerContainer.setOnClickListener { mContext.startActivity(FollowersActivity.getIntent(mContext, mListViewModel.userId)) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchActivity.java b/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchActivity.java index 36479c6447..9d1bce9971 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchActivity.java @@ -5,10 +5,11 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Message; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; -import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; @@ -20,9 +21,13 @@ import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.LogUtils; import com.gh.gamecenter.R; +import com.gh.gamecenter.db.AskSearchHistoryDao; import com.gh.gamecenter.qa.questions.edit.QuestionEditActivity; +import com.gh.gamecenter.qa.search.history.HistoryFragment; import com.lightgame.utils.Util_System_Keyboard; +import java.util.List; + import butterknife.BindView; import butterknife.OnClick; @@ -46,7 +51,7 @@ public class AskSearchActivity extends BaseActivity { @BindView(R.id.bar_question_btn) TextView questionBtn; - private AskSearchFragment mAskAskSearchFragment; + private AskSearchHistoryDao mDao; private String mSearchKey; private String mPostedKey; @@ -96,16 +101,9 @@ public class AskSearchActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mAskAskSearchFragment = new AskSearchFragment(); - Bundle args = new Bundle(); + mDao = new AskSearchHistoryDao(this); mColumnId = getIntent().getStringExtra(EntranceUtils.KEY_COLUMN_ID); mQuestionTag = getIntent().getStringExtra(EntranceUtils.KEY_QUESTION_TAG); - args.putString(EntranceUtils.KEY_COLUMN_ID, mColumnId); - args.putString(EntranceUtils.KEY_QUESTION_TAG, mQuestionTag); - mAskAskSearchFragment.setArguments(args); - getSupportFragmentManager().beginTransaction().replace( - R.id.layout_fragment_content, mAskAskSearchFragment).commitAllowingStateLoss(); - if (!TextUtils.isEmpty(mColumnId) || !TextUtils.isEmpty(mQuestionTag)) { questionBtn.setText("搜索"); if (!TextUtils.isEmpty(mColumnId)) { @@ -115,15 +113,15 @@ public class AskSearchActivity extends BaseActivity { } } - mSearchEt.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_SEARCH) { - Util_System_Keyboard.hideSoftKeyboard(AskSearchActivity.this); - mBaseHandler.sendEmptyMessageDelayed(1, 500); - } - return false; + changeFragment(); + + mSearchEt.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + Util_System_Keyboard.hideSoftKeyboard(AskSearchActivity.this); + mBaseHandler.sendEmptyMessageDelayed(1, 500); + mDao.add(mSearchKey); } + return false; }); mSearchEt.addTextChangedListener(new TextWatcher() { @@ -178,9 +176,7 @@ public class AskSearchActivity extends BaseActivity { private void search() { if (mSearchKey == null) return; - if (mAskAskSearchFragment != null) { - mAskAskSearchFragment.search(mSearchKey); - } + changeFragment(); if (mSearchHint.getVisibility() == View.GONE) { mSearchHint.setVisibility(View.VISIBLE); @@ -206,4 +202,25 @@ public class AskSearchActivity extends BaseActivity { mBaseHandler.sendEmptyMessage(POST_SEARCH_WHAT); } } + + private void changeFragment() { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + List list = getSupportFragmentManager().getFragments(); + for (Fragment fragment : list) { + transaction.hide(fragment); + } + if (mSearchKey == null || mSearchKey.isEmpty()) { + HistoryFragment historyFragment = new HistoryFragment(); + transaction.replace(R.id.layout_fragment_content, historyFragment); + } else { + AskSearchFragment searchFragment = new AskSearchFragment(); + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_SEARCHKEY, mSearchKey); + args.putString(EntranceUtils.KEY_COLUMN_ID, mColumnId); + args.putString(EntranceUtils.KEY_QUESTION_TAG, mQuestionTag); + searchFragment.setArguments(args); + transaction.replace(R.id.layout_fragment_content, searchFragment); + } + transaction.commitAllowingStateLoss(); + } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchFragment.java b/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchFragment.java index 3b454815c3..25de807b47 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/search/AskSearchFragment.java @@ -1,14 +1,10 @@ package com.gh.gamecenter.qa.search; -import android.os.Bundle; -import android.support.annotation.Nullable; import android.support.v4.app.Fragment; -import android.text.TextUtils; import android.view.View; import com.gh.base.fragment.BaseFragment_TabLayout; import com.gh.gamecenter.R; -import com.gh.gamecenter.qa.search.base.BaseAskSearchFragment; import com.gh.gamecenter.qa.search.hottest.HottestFragment; import com.gh.gamecenter.qa.search.newest.NewestFragment; import com.gh.gamecenter.qa.search.question.QuestionFragment; @@ -22,17 +18,14 @@ public class AskSearchFragment extends BaseFragment_TabLayout { @BindView(R.id.fragment_tab_container) public View mTabContainer; - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mTabContainer.setVisibility(View.INVISIBLE); - } - @Override protected void initFragmentList(List fragments) { fragments.add(new HottestFragment()); fragments.add(new NewestFragment()); fragments.add(new QuestionFragment()); + for (Fragment fragment : mFragmentsList) { + fragment.setArguments(getArguments()); + } } @Override @@ -41,17 +34,4 @@ public class AskSearchFragment extends BaseFragment_TabLayout { tabTitleList.add("最新答案"); tabTitleList.add("只看问题"); } - - void search(String searchKey) { - if (TextUtils.isEmpty(searchKey)) { - mTabContainer.setVisibility(View.INVISIBLE); - } else if (mTabContainer.getVisibility() == View.INVISIBLE) { - mTabContainer.setVisibility(View.VISIBLE); - } - for (Fragment fragment : mFragmentsList) { - if (fragment instanceof BaseAskSearchFragment) { - ((BaseAskSearchFragment) fragment).search(searchKey); - } - } - } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/search/base/BaseAskSearchFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/search/base/BaseAskSearchFragment.kt index 90b7a72108..80d738ab09 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/search/base/BaseAskSearchFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/search/base/BaseAskSearchFragment.kt @@ -3,6 +3,7 @@ package com.gh.gamecenter.qa.search.base import android.os.Bundle import android.text.TextUtils import android.view.View +import com.gh.common.util.EntranceUtils import com.gh.gamecenter.baselist.BaseListViewModel import com.gh.gamecenter.baselist.ListAdapter @@ -21,8 +22,10 @@ abstract class BaseAskSearchFragment> : ListFragmen override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val searchKey = arguments?.getString(EntranceUtils.KEY_SEARCHKEY) mListRefresh!!.isEnabled = false mListLoading.visibility = View.GONE + if (searchKey != null) search(searchKey) } override fun onRefresh() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragment.kt new file mode 100644 index 0000000000..499a9cd359 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragment.kt @@ -0,0 +1,50 @@ +package com.gh.gamecenter.qa.search.history + +import android.os.Bundle +import android.support.v7.widget.GridLayoutManager +import android.support.v7.widget.RecyclerView +import android.view.View +import butterknife.OnClick +import com.gh.base.fragment.BaseFragment +import com.gh.common.util.DialogUtils +import com.gh.gamecenter.R +import com.gh.gamecenter.db.AskSearchHistoryDao +import kotterknife.bindView + +class HistoryFragment : BaseFragment() { + + private val mRecyclerView by bindView(R.id.search_history_list) + private val mHistoryContainer by bindView(R.id.search_history_container) + + private var dao: AskSearchHistoryDao? = null + private var mHistoryAdapter: HistoryFragmentAdapter? = null + + override fun getLayoutId(): Int { + return R.layout.fragment_ask_search_history + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + dao = AskSearchHistoryDao(context) + mRecyclerView.layoutManager = object : GridLayoutManager(activity, 3) { + override fun canScrollVertically(): Boolean { + return false + } + } + mHistoryAdapter = HistoryFragmentAdapter(context!!, dao!!, historyEmptyCallback = { + mHistoryContainer.visibility = View.GONE + }) + mRecyclerView.adapter = mHistoryAdapter + } + + + @OnClick(R.id.search_history_clean) + fun onDeleteClick() { + DialogUtils.showWarningDialog(activity, "清空记录", "确定清空历史搜索记录?") { + dao?.deleteAll() + mHistoryAdapter?.clearSearchResult() + mHistoryContainer.visibility = View.GONE + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragmentAdapter.kt new file mode 100644 index 0000000000..a876fda784 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/search/history/HistoryFragmentAdapter.kt @@ -0,0 +1,68 @@ +package com.gh.gamecenter.qa.search.history + +import android.content.Context +import android.support.v4.content.ContextCompat +import android.support.v7.widget.RecyclerView +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import com.gh.common.util.DisplayUtils +import com.gh.gamecenter.R +import com.gh.gamecenter.db.AskSearchHistoryDao +import com.gh.gamecenter.eventbus.EBSearch +import com.lightgame.adapter.BaseRecyclerAdapter +import com.lightgame.utils.Util_System_Keyboard +import org.greenrobot.eventbus.EventBus + +class HistoryFragmentAdapter(context: Context, dao: AskSearchHistoryDao, historyEmptyCallback: () -> Unit) : + BaseRecyclerAdapter(context) { + + private val mDao: AskSearchHistoryDao = dao + + private val mHistoryList: MutableList = dao.all + + init { + if (mHistoryList.isEmpty()) { + historyEmptyCallback.invoke() + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextViewHolder { + val textView = TextView(mContext) + textView.setSingleLine() + textView.ellipsize = TextUtils.TruncateAt.END + textView.textSize = 13f + textView.setPadding(DisplayUtils.dip2px(mContext, 10f), 0, DisplayUtils.dip2px(mContext, 10f), 0) + textView.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(mContext, 32f)) + textView.gravity = Gravity.CENTER_VERTICAL + textView.setBackgroundResource(R.drawable.reuse_listview_item_style) + return TextViewHolder(textView) + } + + override fun getItemCount(): Int { + return mHistoryList.size + } + + override fun onBindViewHolder(holder: TextViewHolder, position: Int) { + holder.textView.text = mHistoryList[position] + holder.textView.setTextColor(ContextCompat.getColor(mContext, R.color.title)) + holder.itemView.setOnClickListener { v -> + val key = holder.textView.text.toString() + mDao.add(key) + EventBus.getDefault().post(EBSearch("history", key)) + Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.windowToken) + } + } + + class TextViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val textView: TextView = itemView as TextView + } + + fun clearSearchResult() { + mHistoryList.clear() + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt index 8dc064b7ff..7b7a9a6244 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt @@ -149,6 +149,8 @@ class SubjectAdapter(context: Context, } "column" -> SubjectActivity.startSubjectActivity(mContext, gameEntity.link , gameEntity.name, false, mEntrance + "(" + subjectData.subjectName + ":大图)") + + else -> DialogUtils.showLowVersionDialog(mContext) } } } else if (holder is FooterViewHolder) { diff --git a/app/src/main/res/layout/fragment_ask_search_history.xml b/app/src/main/res/layout/fragment_ask_search_history.xml new file mode 100644 index 0000000000..d692b495c9 --- /dev/null +++ b/app/src/main/res/layout/fragment_ask_search_history.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file