From bff677d60724acfe5825d077db585ca0927362cc Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 25 Dec 2017 15:48:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=9B=E5=BB=BA=E7=A4=BE?= =?UTF-8?q?=E5=8C=BA=E6=8A=95=E7=A5=A8=EF=BC=8C=E7=BC=96=E8=BE=91=E8=8D=89?= =?UTF-8?q?=E7=A8=BF=E5=9B=9E=E8=B0=83=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=20gameInfo=E5=A2=9E=E5=8A=A0icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/TimestampUtils.java | 13 +++ .../com/gh/gamecenter/GameDetailActivity.java | 24 +++--- .../java/com/gh/gamecenter/MainActivity.java | 5 +- .../com/gh/gamecenter/NormalActivity.java | 12 ++- .../adapter/AskSelectGameAdapter.java | 7 +- .../adapter/InstallFragmentAdapter.java | 2 +- .../gh/gamecenter/adapter/PluginAdapter.java | 2 +- .../ask/SelectGameDialogAdapter.java | 77 +++++++++++++++++ .../gh/gamecenter/ask/SelectGameFragment.java | 85 +++++++++++++++++++ .../gamecenter/ask/myask/MyDraftFragment.java | 4 +- .../questionsdetail/AnswerEditFragment.java | 8 +- .../com/gh/gamecenter/db/info/GameInfo.java | 16 +++- .../gamecenter/gamedetail/XinXiAdapter.java | 2 +- .../gh/gamecenter/kaifu/KaiFuVpAdapter.java | 13 +-- .../gh/gamecenter/manager/GameManager.java | 8 +- .../gh/gamecenter/manager/InstallManager.java | 41 ++++----- .../gh/gamecenter/normal/NormalFragment.java | 28 ++++-- .../retrofit/service/ApiService.java | 7 +- .../SearchGameDetailFragmentAdapter.java | 4 +- .../search/SearchGameListFragmentAdapter.java | 4 +- .../gh/gamecenter/subject/SubjectAdapter.java | 2 +- .../fragment/game/GameFragmentAdapter.java | 4 +- .../main/res/layout/ask_selectgame_footer.xml | 5 +- .../res/layout/layout_menu_answer_post.xml | 17 ++++ app/src/main/res/menu/menu_answer_post.xml | 11 +++ app/src/main/res/values/strings.xml | 1 + 26 files changed, 330 insertions(+), 72 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/ask/SelectGameDialogAdapter.java create mode 100644 app/src/main/res/layout/layout_menu_answer_post.xml create mode 100644 app/src/main/res/menu/menu_answer_post.xml diff --git a/app/src/main/java/com/gh/common/util/TimestampUtils.java b/app/src/main/java/com/gh/common/util/TimestampUtils.java index 979cd12f4f..f4e744f5ad 100644 --- a/app/src/main/java/com/gh/common/util/TimestampUtils.java +++ b/app/src/main/java/com/gh/common/util/TimestampUtils.java @@ -101,6 +101,19 @@ public class TimestampUtils { * 为url添加timestamp */ public static String addTimestamp(String url) { + + // TODO: 22/12/17 刷新版 +// if (TextUtils.isEmpty(url)) { +// return url; +// } +// if (url.contains("?")) { +// String u = url + "×tamp=" + System.currentTimeMillis(); +// return u; +// } else { +// String u = url + "?timestamp=" + System.currentTimeMillis(); +// return u; +// } + if (TextUtils.isEmpty(url)) { return url; } diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index aee22d2c70..b1d30dd63c 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -1,10 +1,12 @@ package com.gh.gamecenter; import android.content.Context; -import android.content.Intent; +import android.os.Bundle; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.gamedetail.GameDetailFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 2017/3/24. @@ -16,22 +18,22 @@ public class GameDetailActivity extends CommonActivity { * 启动游戏详情页面 */ public static void startGameDetailActivity(Context context, GameEntity gameEntity, String entrance) { - Intent intent = new Intent(context, GameDetailActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - intent.putExtra(GameEntity.TAG, gameEntity); - context.startActivity(intent); + Bundle bundle = new Bundle(); + bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); + bundle.putParcelable(GameEntity.TAG, gameEntity); + context.startActivity(new IntentFactory.Builder(context).setActivity(GameDetailActivity.class) + .setFragment(GameDetailFragment.class).setArgs(bundle).build()); } /** * 启动游戏详情页面 */ public static void startGameDetailActivity(Context context, String gameId, String entrance) { - Intent intent = new Intent(context, GameDetailActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(EntranceUtils.KEY_GAMEID, gameId); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - context.startActivity(intent); + Bundle bundle = new Bundle(); + bundle.putString(EntranceUtils.KEY_GAMEID, gameId); + bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); + context.startActivity(new IntentFactory.Builder(context).setActivity(GameDetailActivity.class) + .setFragment(GameDetailFragment.class).setArgs(bundle).build()); } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 8c2633d728..a3cb35fdca 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -406,6 +406,7 @@ public class MainActivity extends BaseActivity { for (GameDigestEntity gameDigestEntity : response) { GameInfo gameInfo = new GameInfo(); gameInfo.setId(gameDigestEntity.getId()); + gameInfo.setGameIcon(gameDigestEntity.getIcon()); gameInfo.setPackageName(packageName); gameInfo.setGameName(gameDigestEntity.getName()); mInstallManager.updateByEntity(gameInfo); @@ -612,7 +613,7 @@ public class MainActivity extends BaseActivity { } } GameManager manager = new GameManager(this); - manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName()); + manager.addOrUpdate(gameEntity); } } break; @@ -1029,7 +1030,7 @@ public class MainActivity extends BaseActivity { @Override public void onResponse(GameEntity response) { GameManager manager = new GameManager(getApplicationContext()); - manager.addOrUpdate(response.getApk(), response.getId(), response.getName()); + manager.addOrUpdate(response); // 检查是否能插件化 if (response.getTag() != null && response.getTag().size() != 0) { for (ApkEntity apkEntity : response.getApk()) { diff --git a/app/src/main/java/com/gh/gamecenter/NormalActivity.java b/app/src/main/java/com/gh/gamecenter/NormalActivity.java index 56392016ae..9d22d13c3e 100644 --- a/app/src/main/java/com/gh/gamecenter/NormalActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NormalActivity.java @@ -9,6 +9,7 @@ import android.support.annotation.StringRes; import android.support.v4.app.Fragment; import android.support.v7.widget.Toolbar; import android.text.TextUtils; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -17,8 +18,6 @@ import com.gh.base.BaseActivity; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.normal.ToolbarController; -import java.util.List; - import butterknife.BindView; /** @@ -117,6 +116,15 @@ public class NormalActivity extends BaseActivity implements ToolbarController, T public void setToolbarMenu(@MenuRes int res) { mNormalToolbar.inflateMenu(res); mNormalToolbar.setOnMenuItemClickListener(this); + + Menu menu = mNormalToolbar.getMenu(); + for (int i = 0; i < menu.size(); i++) { + MenuItem menuItem = menu.getItem(i); + // menu设置actionLayout后,无法捕捉点击事件,以icon为tag,如果icon is null 手动设置menuItem点击事件 + if (menuItem != null && menuItem.getIcon() == null) { + menuItem.getActionView().setOnClickListener((v) -> this.onMenuItemClick(menuItem)); + } + } } @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/AskSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/AskSelectGameAdapter.java index 35809460f9..dabc4d3385 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/AskSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/AskSelectGameAdapter.java @@ -112,7 +112,7 @@ public class AskSelectGameAdapter extends ListAdapter { return new AskSelectGameItemViewHolder(view, mEntityList, mListClickListener); case ItemViewType.ITEM_FOOTER: view = mLayoutInflater.inflate(R.layout.ask_selectgame_footer, parent, false); - return new ReuseViewHolder(view); + return new ReuseViewHolder(view,null, mListClickListener); case ItemViewType.ITEM_TOP: view = mLayoutInflater.inflate(R.layout.area_title_item, parent, false); return new ReuseViewHolder(view, null, mListClickListener); @@ -194,4 +194,9 @@ public class AskSelectGameAdapter extends ListAdapter { } } } + + public void postCommunitiesSuccess(AskGameSelectEntity entity) { + mEntityList.add(entity); + notifyDataSetChanged(); + } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java index 067889df94..6e1002a64a 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java @@ -285,7 +285,7 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { GameManager manager = new GameManager(mContext); for (GameEntity entity : this.gameList) { entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); - manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + manager.addOrUpdate(entity); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index 3828886e91..72d49c88b2 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -92,7 +92,7 @@ public class PluginAdapter extends BaseRecyclerAdapter { GameManager manager = new GameManager(mContext); for (GameEntity gEntity : list) { gEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gEntity.getName())); - manager.addOrUpdate(gEntity.getApk(), gEntity.getId(), gEntity.getName()); + manager.addOrUpdate(gEntity); } mPluginList = list; notifyItemRangeInserted(0, mPluginList.size()); diff --git a/app/src/main/java/com/gh/gamecenter/ask/SelectGameDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/SelectGameDialogAdapter.java new file mode 100644 index 0000000000..216f5ba28a --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/ask/SelectGameDialogAdapter.java @@ -0,0 +1,77 @@ +package com.gh.gamecenter.ask; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ProgressBar; + +import com.gh.common.util.ImageUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.db.info.InstallInfo; +import com.gh.gamecenter.manager.InstallManager; +import com.gh.gamecenter.suggest.SelectGameViewHolder; +import com.lightgame.adapter.BaseRecyclerAdapter; +import com.lightgame.utils.Utils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by khy on 25/12/17. + */ + +public class SelectGameDialogAdapter extends BaseRecyclerAdapter { + private OnGameSelectListener listener; + + private List apkList; + + private ProgressBar pb; + + public SelectGameDialogAdapter(Context context, OnGameSelectListener listener, ProgressBar pb) { + super(context); + this.listener = listener; + this.pb = pb; + + apkList = new ArrayList<>(); + + initData(); + } + + private void initData() { + InstallManager cManager = new InstallManager(mContext); + apkList = cManager.getAllInstall(); + notifyDataSetChanged(); + pb.setVisibility(View.GONE); + } + + @Override + public SelectGameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = mLayoutInflater.inflate(R.layout.dialog_select_game_item, parent, false); + return new SelectGameViewHolder(view); + } + + @Override + public void onBindViewHolder(SelectGameViewHolder holder, int position) { + + InstallInfo installInfo = apkList.get(position); + ImageUtils.Companion.display(holder.gameIcon, installInfo.getIcon()); + holder.gameName.setText(installInfo.getGameName()); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onSelect(installInfo); + } + }); + } + + @Override + public int getItemCount() { + return apkList.size(); + } + + interface OnGameSelectListener { + void onSelect(InstallInfo installInfo); + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java b/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java index df62e520b2..89b41a60f0 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java @@ -1,10 +1,14 @@ package com.gh.gamecenter.ask; +import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; +import android.view.Window; +import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; @@ -13,18 +17,23 @@ import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.AskSelectGameAdapter; import com.gh.gamecenter.ask.entity.AskGameSelectEntity; +import com.gh.gamecenter.ask.entity.CommunitiesGameEntity; import com.gh.gamecenter.ask.entity.MeEntity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; +import com.gh.gamecenter.db.info.InstallInfo; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import org.json.JSONException; import org.json.JSONObject; import java.util.List; import butterknife.BindView; +import okhttp3.MediaType; +import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.HttpException; import rx.Observable; @@ -112,6 +121,7 @@ public class SelectGameFragment extends ListFragment { } break; case R.id.ask_selectgame_footer: + CheckLoginUtils.checkLogin(getContext(), this::showSelectDialog); break; case R.id.ask_selectgame_item_votebtn: CheckLoginUtils.checkLogin(getContext(), () -> { @@ -126,6 +136,81 @@ public class SelectGameFragment extends ListFragment { } } + private void showSelectDialog() { + Dialog selectGameDialog = new Dialog(getContext()); + + View view = View.inflate(getContext(), R.layout.dialog_suggest_select_game, null); + RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.dialog_suggest_game_rv); + TextView back = (TextView) view.findViewById(R.id.dialog_suggest_game_back); + ProgressBar pb = (ProgressBar) view.findViewById(R.id.dialog_suggest_game_load); + recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 4)); + recyclerView.setAdapter(new SelectGameDialogAdapter(getContext(), + (installInfo) -> { + selectGameDialog.dismiss(); + postCommunities(installInfo); + }, pb)); + + selectGameDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + selectGameDialog.setCanceledOnTouchOutside(false); + selectGameDialog.setContentView(view); + selectGameDialog.show(); + + back.setOnClickListener((v) -> { + selectGameDialog.cancel(); + }); + } + + + private void postCommunities(InstallInfo installInfo) { + JSONObject object = new JSONObject(); + try { + object.put("game_id", installInfo.getId()); + } catch (JSONException e) { + e.printStackTrace(); + } + RequestBody body = RequestBody.create(MediaType.parse("application/json"), object.toString()); + + RetrofitManager.getInstance(getContext()).getApi() + .postCommunities(body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(ResponseBody response) { + super.onResponse(response); + toast(R.string.vote_success); + try { + JSONObject jsonResponse = new JSONObject(response.string()); + String status = jsonResponse.getString("status"); + if ("show".equals(status)) { + String id = jsonResponse.getString("_id"); + AskGameSelectEntity entity = new AskGameSelectEntity(); + CommunitiesGameEntity communitiesGameEntity = new CommunitiesGameEntity(); + communitiesGameEntity.setId(installInfo.getId()); + communitiesGameEntity.setIcon(installInfo.getIcon()); + communitiesGameEntity.setName(installInfo.getGameName()); + MeEntity meEntity = new MeEntity(); + meEntity.setCommunityVoted(true); + entity.setId(id); + entity.setVote(1); + entity.setStatus("voting"); + entity.setMe(meEntity); + entity.setGame(communitiesGameEntity); + mAdapter.postCommunitiesSuccess(entity); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + toast(R.string.vote_failure); + } + }); + } + private void vote(final String communityId) { RetrofitManager.getInstance(getContext()).getApi() .communitiesVote(communityId) diff --git a/app/src/main/java/com/gh/gamecenter/ask/myask/MyDraftFragment.java b/app/src/main/java/com/gh/gamecenter/ask/myask/MyDraftFragment.java index 30a65c77e1..422a638340 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/myask/MyDraftFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/myask/MyDraftFragment.java @@ -16,7 +16,6 @@ import com.gh.gamecenter.baselist.LoadStatus; import com.gh.gamecenter.baselist.LoadType; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.retrofit.RetrofitManager; -import com.lightgame.utils.Utils; import java.util.List; @@ -37,12 +36,11 @@ public class MyDraftFragment extends ListFragment { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - Utils.log("======AAA::" + requestCode + "==" + resultCode + "==" + mDraftPosition); if (requestCode == ANSWER_DRAFT_REQUEST && mDraftPosition != -1) { if (resultCode == Activity.RESULT_OK) { mAdapter.notifyItemRemoved(mDraftPosition); mDraftPosition = -1; - } else if (resultCode == Activity.RESULT_CANCELED) { + } else if (resultCode == Activity.RESULT_CANCELED && data != null) { mAdapter.answerContentChange(mDraftPosition, data.getStringExtra(EntranceUtils.KEY_ANSWER_CONTENT)); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java index 848a352538..6ef5537e36 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java @@ -90,6 +90,8 @@ public class AnswerEditFragment extends NormalFragment { // } + // todo 这里网络请求方法过多 修改成viewmodle的形式 + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -137,7 +139,7 @@ public class AnswerEditFragment extends NormalFragment { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setNavigationTitle(R.string.answer_detail_title); - initMenu(R.menu.menu_concern); + initMenu(R.menu.menu_answer_post); mTitle.setText(mQuestionsTitle); mEditContent.setPadding(20, 15, 20, 15); @@ -149,7 +151,7 @@ public class AnswerEditFragment extends NormalFragment { @Override public void onMenuItemClick(MenuItem menuItem) { - if (menuItem.getItemId() == R.id.menu_concern) { + if (menuItem.getItemId() == R.id.menu_answer_post) { postAnswer(); } } @@ -271,7 +273,7 @@ public class AnswerEditFragment extends NormalFragment { if (getActivity() != null) { Intent data = new Intent(); data.putExtra(EntranceUtils.KEY_ANSWER_CONTENT, editContent); - getActivity().setResult(Activity.RESULT_OK, data); + getActivity().setResult(Activity.RESULT_CANCELED, data); getActivity().finish(); } } diff --git a/app/src/main/java/com/gh/gamecenter/db/info/GameInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/GameInfo.java index b06e5c632b..ece90d0652 100644 --- a/app/src/main/java/com/gh/gamecenter/db/info/GameInfo.java +++ b/app/src/main/java/com/gh/gamecenter/db/info/GameInfo.java @@ -22,15 +22,19 @@ public class GameInfo implements Serializable { @DatabaseField(columnName = "gameName") private String gameName; + @DatabaseField(columnName = "gameIcon") + private String gameIcon; + public GameInfo() { } - public GameInfo(String packageName, String id, String gameName) { + public GameInfo(String packageName, String id, String gameName, String gameIcon) { super(); this.packageName = packageName; this.id = id; this.gameName = gameName; + this.gameIcon = gameIcon; } public String getPackageName() { @@ -57,10 +61,18 @@ public class GameInfo implements Serializable { this.gameName = gameName; } + public String getGameIcon() { + return gameIcon; + } + + public void setGameIcon(String gameIcon) { + this.gameIcon = gameIcon; + } + @Override public String toString() { return "GameEntity [packageName=" + packageName + ", id=" + id - + ", gameName=" + gameName + "]"; + + ", gameName=" + gameName + ", gameIcon=" + gameIcon + "]"; } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java index 7643072410..06bddcba67 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java @@ -230,7 +230,7 @@ public class XinXiAdapter extends BaseRecyclerAdapter { GameManager manager = new GameManager(mContext); for (GameEntity entity : result) { entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); - manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + manager.addOrUpdate(entity); } mGameList.addAll(result); diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java index 4af4955d63..c281b1bd11 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java @@ -92,20 +92,21 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { GameManager manager = new GameManager(mContext); for (int i = 0; i < response.size(); i++) { // 初始化游戏状态 - response.get(i).setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(response.get(i).getName())); - manager.addOrUpdate(response.get(i).getApk(), response.get(i).getId(), response.get(i).getName()); - ApkActiveUtils.filterHideApk(response.get(i)); // 过滤隐藏apk + GameEntity entity = response.get(i); + entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); + manager.addOrUpdate(entity); + ApkActiveUtils.filterHideApk(entity); // 过滤隐藏apk // 设置时间断点 if (i == 0) { if (mEntityList.size() == 0) { // 列表page == 0 && position=0 默认添加时间断点 GameEntity kaiFuTimeEntity = new GameEntity(); - kaiFuTimeEntity.setKaifuTimeHint(response.get(i).getServerEntity().getTime()); + kaiFuTimeEntity.setKaifuTimeHint(entity.getServerEntity().getTime()); response.add(i, kaiFuTimeEntity); i++; } else { // 列表 page > 0 && position=0 与上一页最后一条对比 GameEntity gameEntity = mEntityList.get(mEntityList.size() - 1); KaiFuServerEntity serverEntity = gameEntity.getServerEntity(); - KaiFuServerEntity nextServerEntity = response.get(i).getServerEntity(); + KaiFuServerEntity nextServerEntity = entity.getServerEntity(); if (serverEntity == null || nextServerEntity == null) continue; long time = serverEntity.getTime(); @@ -120,7 +121,7 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { } if (i < response.size() - 1) { - KaiFuServerEntity serverEntity = response.get(i).getServerEntity(); + KaiFuServerEntity serverEntity = entity.getServerEntity(); KaiFuServerEntity nextServerEntity = response.get(i + 1).getServerEntity(); if (serverEntity == null || nextServerEntity == null) continue; diff --git a/app/src/main/java/com/gh/gamecenter/manager/GameManager.java b/app/src/main/java/com/gh/gamecenter/manager/GameManager.java index 4bcc1b6095..fae575352a 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/GameManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/GameManager.java @@ -5,6 +5,7 @@ import android.content.Context; import com.gh.gamecenter.db.GameDao; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.entity.ApkEntity; +import com.gh.gamecenter.entity.GameEntity; import java.util.ArrayList; import java.util.List; @@ -23,8 +24,9 @@ public class GameManager { } } - public void addOrUpdate(ArrayList apk, String gameId, String gameName) { - if (apk == null || apk.isEmpty()) { + public void addOrUpdate(GameEntity gameEntity) { + ArrayList apk = gameEntity.getApk(); + if (apk.isEmpty()) { return; } ArrayList list = new ArrayList<>(); @@ -40,7 +42,7 @@ public class GameManager { packageNames.remove(gameInfo.getPackageName()); } for (String packageName : packageNames) { - list.add(new GameInfo(packageName, gameId, gameName)); + list.add(new GameInfo(packageName, gameEntity.getId(), gameEntity.getName(), gameEntity.getIcon())); } if (list.size() != 0) { dao.addAll(list); diff --git a/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java b/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java index 907396caa7..1a3e8e758f 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java @@ -4,6 +4,7 @@ import android.content.Context; import com.gh.common.util.PackageUtils; import com.gh.gamecenter.db.InstallDao; +import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.db.info.InstallInfo; import com.gh.gamecenter.eventbus.EBConcernChanged; @@ -47,39 +48,41 @@ public class InstallManager { /** * 根据GameEntity更新已安装的游戏 */ - public void updateByEntity(com.gh.gamecenter.db.info.GameInfo gameEntity) { + public void updateByEntity(GameInfo gameEntity) { String packageName = gameEntity.getPackageName(); - InstallInfo concernEntity = findInstallById(gameEntity.getId()); - if (concernEntity != null) { - concernEntity.setTime(System.currentTimeMillis()); + InstallInfo installInfo = findInstallById(gameEntity.getId()); + if (installInfo != null) { + installInfo.setTime(System.currentTimeMillis()); + installInfo.setIcon(gameEntity.getGameIcon()); if (gameEntity.getGameName() != null) { - concernEntity.setGameName(gameEntity.getGameName()); + installInfo.setGameName(gameEntity.getGameName()); } - concernEntity.getPackageNames().put(packageName, true); + installInfo.getPackageNames().put(packageName, true); int quantity = 0; - for (String key : concernEntity.getPackageNames().keySet()) { - if (concernEntity.getPackageNames().get(key)) { + for (String key : installInfo.getPackageNames().keySet()) { + if (installInfo.getPackageNames().get(key)) { quantity++; } } - concernEntity.setInstalledQuantity(quantity); - updateInstall(concernEntity); + installInfo.setInstalledQuantity(quantity); + updateInstall(installInfo); } else { - concernEntity = new InstallInfo(); - concernEntity.setId(gameEntity.getId()); - concernEntity.setTime(System.currentTimeMillis()); + installInfo = new InstallInfo(); + installInfo.setId(gameEntity.getId()); + installInfo.setIcon(gameEntity.getGameIcon()); + installInfo.setTime(System.currentTimeMillis()); HashMap packageNames = new HashMap<>(); packageNames.put(packageName, true); - concernEntity.setPackageNames(packageNames); - concernEntity.setWeight(1); - concernEntity.setInstalledQuantity(1); + installInfo.setPackageNames(packageNames); + installInfo.setWeight(1); + installInfo.setInstalledQuantity(1); if (gameEntity.getGameName() != null) { - concernEntity.setGameName(gameEntity.getGameName()); + installInfo.setGameName(gameEntity.getGameName()); } else { - concernEntity.setGameName(PackageUtils.getNameByPackageName( + installInfo.setGameName(PackageUtils.getNameByPackageName( context, packageName)); } - addInstall(concernEntity); + addInstall(installInfo); } } diff --git a/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java b/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java index cc2ec6b5bb..a352fc85e0 100644 --- a/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java @@ -1,10 +1,14 @@ package com.gh.gamecenter.normal; +import android.content.Intent; import android.support.annotation.MenuRes; +import android.support.v4.app.Fragment; import android.view.MenuItem; import com.gh.base.fragment.BaseFragment; -import com.gh.gamecenter.NormalActivity; +import com.lightgame.config.CommonDebug; + +import java.util.List; /** * Created by khy on 17/10/17. @@ -13,14 +17,14 @@ import com.gh.gamecenter.NormalActivity; public abstract class NormalFragment extends BaseFragment { protected void setNavigationTitle(String title) { - if (getActivity() instanceof NormalActivity) { - ((NormalActivity) getActivity()).setNavigationTitle(title); + if (getActivity() instanceof ToolbarController) { + ((ToolbarController) getActivity()).setNavigationTitle(title); } } protected void initMenu(@MenuRes int res) { - if (getActivity() instanceof NormalActivity) { - ((NormalActivity) getActivity()).setToolbarMenu(res); + if (getActivity() instanceof ToolbarController) { + ((ToolbarController) getActivity()).setToolbarMenu(res); } } @@ -31,4 +35,18 @@ public abstract class NormalFragment extends BaseFragment { public boolean onBackPressed () { return false; } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (CommonDebug.IS_DEBUG) { + CommonDebug.logMethodWithParams(this, requestCode, resultCode, data); + } + List fragments = getChildFragmentManager().getFragments(); + for (Fragment fragment : fragments) { + fragment.onActivityResult(requestCode, resultCode, data); + } + + } + } 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 5d8b8011c6..b309a490fe 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 @@ -692,10 +692,15 @@ public interface ApiService { /** * 社区列表 */ - @GET("communities") Observable> getAskGameSelect(@Query("offset") int offset); + /** + * 社区列表 + */ + @POST("communities") + Observable postCommunities(@Body RequestBody body); + /** * 获取社区首页精选 */ diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java index bd026c4742..c5371b33ac 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -1,6 +1,5 @@ package com.gh.gamecenter.search; -import android.content.Context; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; @@ -9,7 +8,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.view.inputmethod.InputMethodManager; import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.ApkActiveUtils; @@ -84,7 +82,7 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter { for (GameEntity gameEntity : response) { // 初始化游戏状态 gameEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gameEntity.getName())); - manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName()); + manager.addOrUpdate(gameEntity); ApkActiveUtils.filterHideApk(gameEntity); } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index d1fed3ff07..9bac33805a 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -1,6 +1,5 @@ package com.gh.gamecenter.search; -import android.content.Context; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; @@ -8,7 +7,6 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.inputmethod.InputMethodManager; import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.ItemViewType; @@ -90,7 +88,7 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter { for (GameEntity gameEntity : response) { // 初始化游戏状态 gameEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gameEntity.getName())); - manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName()); + manager.addOrUpdate(gameEntity); ApkActiveUtils.filterHideApk(gameEntity); } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java index 76215bacf9..f53228cf93 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java @@ -110,7 +110,7 @@ class SubjectAdapter extends BaseRecyclerAdapter { for (GameEntity entity : response) { // 黄壮华 初始化游戏状态 修改2015/8/15 entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); - manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + manager.addOrUpdate(entity); ApkActiveUtils.filterHideApk(entity); // 过滤隐藏apk } diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java index 15e73f16c5..14fafc3845 100644 --- a/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java @@ -254,9 +254,9 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { for (int i = 0; i < subjectEntity.getData().size(); i++) { gameEntity = subjectEntity.getData().get(i); ArrayList apkist = gameEntity.getApk(); - if (apkist != null && !apkist.isEmpty()) { + if (!apkist.isEmpty()) { gameEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gameEntity.getName())); - manager.addOrUpdate(apkist, gameEntity.getId(), gameEntity.getName()); + manager.addOrUpdate(gameEntity); } else if (TextUtils.isEmpty(gameEntity.getId())) { if (TextUtils.isEmpty(gameEntity.getType()) || TextUtils.isEmpty(gameEntity.getLink()) diff --git a/app/src/main/res/layout/ask_selectgame_footer.xml b/app/src/main/res/layout/ask_selectgame_footer.xml index 9e1b59fd22..babf813c42 100644 --- a/app/src/main/res/layout/ask_selectgame_footer.xml +++ b/app/src/main/res/layout/ask_selectgame_footer.xml @@ -1,9 +1,10 @@ diff --git a/app/src/main/res/layout/layout_menu_answer_post.xml b/app/src/main/res/layout/layout_menu_answer_post.xml new file mode 100644 index 0000000000..ae00a86e31 --- /dev/null +++ b/app/src/main/res/layout/layout_menu_answer_post.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/menu/menu_answer_post.xml b/app/src/main/res/menu/menu_answer_post.xml new file mode 100644 index 0000000000..5f7a89e6a7 --- /dev/null +++ b/app/src/main/res/menu/menu_answer_post.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f90073b6f0..db9cc01890 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -485,5 +485,6 @@ 答案为什么折叠? 继续撰写 回答 + 发布