diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c225b8a1f5..fadd88eaaa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,9 +109,6 @@
-
0) {
+ view.setText(String.format("%s - %s", game.getName(),
+ PlatformUtils.getInstance(view.getContext()).getPlatformName(
+ game.getApk().get(0).getPlatform())));
+ } else {
+ view.setText(game.getName());
+ }
+
+ }
}
diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java
index ab184c6256..18373ec755 100644
--- a/app/src/main/java/com/gh/common/util/GameViewUtils.java
+++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java
@@ -91,6 +91,7 @@ public class GameViewUtils {
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(Color.TRANSPARENT);
gradientDrawable.setStroke(DisplayUtils.dip2px(context, 0.6f), color);
+ gradientDrawable.setCornerRadius(DisplayUtils.dip2px(2.5F));
tag.setBackgroundDrawable(gradientDrawable);
tag.setTextColor(color);
}
diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java
deleted file mode 100644
index 962b8506dd..0000000000
--- a/app/src/main/java/com/gh/gamecenter/PluginActivity.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.gh.gamecenter;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.widget.LinearLayout;
-
-import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.base.BaseActivity;
-import com.gh.base.OnRequestCallBackListener;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.EntranceUtils;
-import com.lightgame.download.DataWatcher;
-import com.lightgame.download.DownloadEntity;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.adapter.PluginAdapter;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.eventbus.EBDownloadStatus;
-import com.gh.gamecenter.eventbus.EBNetworkState;
-import com.gh.gamecenter.eventbus.EBPackage;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.BindView;
-
-/**
- * Created by LGT on 2016/7/6.
- * 可插件化界面
- */
-public class PluginActivity extends BaseActivity implements OnRequestCallBackListener {
-
- @BindView(R.id.plugin_list)
- RecyclerView mPluginRv;
- @BindView(R.id.plugin_pb_loading)
- ProgressBarCircularIndeterminate mPluginLoading;
- @BindView(R.id.reuse_no_connection)
- LinearLayout mNoConn;
-
- private PluginAdapter adapter;
-
- private boolean isEverpause = false;
-
- private DataWatcher dataWatcher = new DataWatcher() {
- @Override
- public void onDataChanged(DownloadEntity downloadEntity) {
- //特殊 插件化update
- if (downloadEntity.isPluggable()) {
- ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- gameEntity = adapter.getPluginList().get(location);
- if (gameEntity != null) {
- DownloadItemUtils.processDate(PluginActivity.this, gameEntity,
- downloadEntity, adapter, location);
- }
- }
- }
- }
- }
- };
-
- @NonNull
- public static Intent getIntent(Context context, String entrance) {
- Intent intent = new Intent(context, PluginActivity.class);
- intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance);
- return intent;
- }
-
- @Override
- protected int getLayoutId() {
- return R.layout.activity_plugin;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setNavigationTitle(getString(R.string.title_plugin));
-
- mNoConn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mPluginLoading.setVisibility(View.VISIBLE);
- mPluginRv.setVisibility(View.VISIBLE);
- mNoConn.setVisibility(View.GONE);
- adapter = new PluginAdapter(PluginActivity.this, PluginActivity.this, mEntrance);
- mPluginRv.setAdapter(adapter);
- }
- });
-
- mPluginRv.setHasFixedSize(true);
- mPluginRv.setLayoutManager(new LinearLayoutManager(this));
- adapter = new PluginAdapter(this, this, mEntrance);
- mPluginRv.setAdapter(adapter);
-
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- isEverpause = true;
- DownloadManager.getInstance(this).removeObserver(dataWatcher);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- if (isEverpause) {
- for (GameEntity entity : adapter.getPluginList()) {
- entity.setEntryMap(DownloadManager.getInstance(this).getEntryMap(entity.getName()));
- }
- adapter.notifyDataSetChanged();
- }
- isEverpause = false;
- DownloadManager.getInstance(this).addObserver(dataWatcher);
- }
-
- @Override
- public void loadDone() {
- if (mPluginLoading != null && mPluginLoading.getVisibility() == View.VISIBLE) {
- mPluginLoading.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void loadDone(Object obj) {
-
- }
-
- @Override
- public void loadError() {
-
- }
-
- @Override
- public void loadEmpty() {
-
- }
-
- // 下载被删除事件
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBDownloadStatus status) {
- if ("delete".equals(status.getStatus())) {
- DownloadManager.getInstance(this).removePlatform(status.getName(), status.getPlatform());
-
- ArrayList locationList = adapter.getLocationMap().get(status.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- gameEntity = adapter.getPluginList().get(location);
- if (gameEntity != null && gameEntity.getEntryMap() != null) {
- gameEntity.getEntryMap().remove(status.getPlatform());
- }
- adapter.notifyItemChanged(location);
- }
- }
- }
- }
-
- //连接上网络事件
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBNetworkState busNetworkState) {
- if (busNetworkState.isNetworkConnected()) {
- if (mNoConn.getVisibility() == View.VISIBLE) {
- mPluginRv.setVisibility(View.VISIBLE);
- mPluginLoading.setVisibility(View.VISIBLE);
- mNoConn.setVisibility(View.GONE);
- adapter = new PluginAdapter(this, this, mEntrance);
- mPluginRv.setAdapter(adapter);
- }
- }
- }
-
- //安装、卸载事件
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBPackage busFour) {
- ArrayList locationList = adapter.getLocationMap().get(busFour.getPackageName());
- if (locationList != null) {
- for (int location : locationList) {
- if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) {
- List list = adapter.getPluginList();
- for (int i = 0, size = list.size(); i < size; i++) {
- if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) {
- list.remove(i);
- adapter.notifyItemRemoved(location);
- break;
- }
- }
- }
- }
- adapter.initLocationMap();
- }
- }
-
-}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java
deleted file mode 100644
index fee72bf189..0000000000
--- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package com.gh.gamecenter.adapter;
-
-import android.support.v4.util.ArrayMap;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.gh.base.OnRequestCallBackListener;
-import com.gh.common.util.DataCollectionUtils;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.common.util.PlatformUtils;
-import com.gh.common.util.StringUtils;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.GameDetailActivity;
-import com.gh.gamecenter.PluginActivity;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
-import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.entity.GameUpdateEntity;
-import com.gh.gamecenter.manager.PackagesManager;
-import com.lightgame.adapter.BaseRecyclerAdapter;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by LGT on 2016/7/6.
- */
-public class PluginAdapter extends BaseRecyclerAdapter {
-
- private OnRequestCallBackListener mListener;
-
- private List mPluginList;
- private ArrayMap> mLocationMap;
-
- private String mEntrance;
-
- public PluginAdapter(PluginActivity context, OnRequestCallBackListener listener, String entrance) {
- super(context);
- mListener = listener;
- mEntrance = entrance;
-
- mPluginList = new ArrayList<>();
-
- mLocationMap = new ArrayMap<>();
-
- init();
- }
-
- // 检查可以插件化的游戏
- private void init() {
- ArrayList updateList = PackagesManager.INSTANCE.getUpdateList();
- if (updateList.isEmpty()) {
- return;
- }
- List list = new ArrayList<>();
- GameUpdateEntity gameUpdateEntity;
- for (int i = 0, size = updateList.size(); i < size; i++) {
- gameUpdateEntity = updateList.get(i);
- if (gameUpdateEntity.isPluggable()) {
- GameEntity gameEntity = new GameEntity();
- gameEntity.setId(gameUpdateEntity.getId());
- gameEntity.setName(gameUpdateEntity.getName());
- gameEntity.setIcon(gameUpdateEntity.getIcon());
- gameEntity.setTag(gameUpdateEntity.getTag());
- gameEntity.setBrief(gameUpdateEntity.getBrief());
- gameEntity.setPluggable(true);
-
- ApkEntity apkEntity = new ApkEntity();
- apkEntity.setUrl(gameUpdateEntity.getUrl());
- apkEntity.setPackageName(gameUpdateEntity.getPackageName());
- apkEntity.setSize(gameUpdateEntity.getSize());
- apkEntity.setVersion(gameUpdateEntity.getVersion());
- apkEntity.setGhVersion(gameUpdateEntity.getGhVersion());
- apkEntity.setPlatform(gameUpdateEntity.getPlatform());
- apkEntity.setEtag(gameUpdateEntity.getEtag());
-
- ArrayList apk = new ArrayList<>();
- apk.add(apkEntity);
- gameEntity.setApk(apk);
-
- list.add(gameEntity);
- }
- }
- if (!list.isEmpty()) {
- for (GameEntity gEntity : list) {
- gEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gEntity.getName()));
- }
- mPluginList = list;
- notifyItemRangeInserted(0, mPluginList.size());
- initLocationMap();
- if (mListener != null) {
- mListener.loadDone();
- }
- }
- }
-
- public void initLocationMap() {
- ArrayList list;
- GameEntity gameEntity;
- for (int i = 0; i < mPluginList.size(); i++) {
- gameEntity = mPluginList.get(i);
- List entityList = gameEntity.getApk();
- if (!entityList.isEmpty()) {
- for (ApkEntity apkEntity : entityList) {
- list = mLocationMap.get(apkEntity.getPackageName());
- if (list == null) {
- list = new ArrayList<>();
- mLocationMap.put(apkEntity.getPackageName(), list);
- }
- list.add(i);
- }
- }
- }
- }
-
- @Override
- public GameNormalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = mLayoutInflater.inflate(R.layout.game_normal_item, parent, false);
- return new GameNormalViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(final GameNormalViewHolder holder, int position) {
-
- final GameEntity gameEntity = mPluginList.get(position);
-
- holder.gameOrder.setVisibility(View.GONE);
-
-// viewHolder.gameThumb.setImageURI(gameEntity.getIcon());
- ImageUtils.display(holder.gameThumb, gameEntity.getIcon());
- if (gameEntity.isPluggable()) {
- holder.gameName.setText(gameEntity.getName() + " - " +
- PlatformUtils.getInstance(mContext).getPlatformName(gameEntity.getApk().get(0).getPlatform()));
- } else {
- holder.gameName.setText(gameEntity.getName());
- }
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.setText(gameEntity.getBrief());
- } else {
- holder.gameDes.setText(gameEntity.getApk().get(0).getSize() + " " + gameEntity.getBrief());
- }
- GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle());
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataCollectionUtils.uploadClick(mContext, "列表", "可以插件化的游戏", gameEntity.getName());
-
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity.getId(),
- StringUtils.buildString(mEntrance, "+(插件化[", String.valueOf(holder.getAdapterPosition() + 1), "])"));
- }
- });
-
- DownloadItemUtils.setOnClickListener(mContext, holder.gameDownloadBtn, gameEntity, position, PluginAdapter.this,
- StringUtils.buildString(mEntrance, "+(插件化[", String.valueOf(position + 1), "])"), "插件化:" + gameEntity.getName());
-
- DownloadItemUtils.updateItem(mContext, gameEntity, holder, false);
- }
-
- @Override
- public int getItemCount() {
- return mPluginList.size();
- }
-
- public List getPluginList() {
- return mPluginList;
- }
-
- public ArrayMap> getLocationMap() {
- return mLocationMap;
- }
-
-}
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
index 569f8fb49c..6548f30de0 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
@@ -14,6 +14,7 @@ import com.gh.common.view.HorizontalItemDecoration
import com.gh.gamecenter.GameDetailActivity
import com.gh.gamecenter.R
import com.gh.gamecenter.adapter.viewholder.*
+import com.gh.gamecenter.databinding.GameItemBinding
import com.gh.gamecenter.databinding.GamedetailItemCommentsBinding
import com.gh.gamecenter.databinding.GamedetailItemImageBinding
import com.gh.gamecenter.databinding.GamedetailItemUpdateContentBinding
@@ -22,6 +23,7 @@ import com.gh.gamecenter.entity.GameEntity
import com.gh.gamecenter.entity.LinkEntity
import com.gh.gamecenter.entity.RatingComment
import com.gh.gamecenter.eventbus.EBReuse
+import com.gh.gamecenter.game.GameItemViewHolder
import com.gh.gamecenter.gamedetail.GameDetailFragment
import com.lightgame.adapter.BaseRecyclerAdapter
import org.greenrobot.eventbus.EventBus
@@ -103,8 +105,8 @@ class DescAdapter(context: Context,
ReuseViewHolder(view)
}
GAME -> {
- val view = mLayoutInflater.inflate(R.layout.game_normal_item, parent, false)
- GameNormalViewHolder(view)
+ val view = mLayoutInflater.inflate(R.layout.game_item, parent, false)
+ GameItemViewHolder(GameItemBinding.bind(view))
}
FOOTER -> {
val view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)
@@ -132,7 +134,7 @@ class DescAdapter(context: Context,
is GameDetailPluginViewHolder -> initPluginViewHolder(holder, mDescItemList[position])
is GameDetailIntroViewHolder -> initIntroViewHolder(holder, mDescItemList[position])
is GameDetailGameTagViewHolder -> initGameTagViewHolder(holder, mDescItemList[position])
- is GameNormalViewHolder -> initGameNormalViewHolder(holder, position)
+ is GameItemViewHolder -> initGameNormalViewHolder(holder.binding, position)
is GameDetailUpdateContentViewHolder -> bindUpdateHolder(holder, mDescItemList[position].update)
is GameDetailRecommendImageViewHolder -> bindImageViewHolder(holder, mDescItemList[position].recommendedImage)
is GameDetailCommentsViewHolder -> bindCommentsViewHolder(holder, mDescItemList[position].comments)
@@ -384,21 +386,12 @@ class DescAdapter(context: Context,
}
}
- private fun initGameNormalViewHolder(holder: GameNormalViewHolder, position: Int) {
+ private fun initGameNormalViewHolder(binding: GameItemBinding, position: Int) {
val gameEntity = mDescItemList[position].recommendedGame!!
+ binding.game = gameEntity
- ImageUtils.display(holder.gameThumb, gameEntity.icon)
- holder.gameName.text = gameEntity.name
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.text = gameEntity.brief
- } else {
- holder.gameDes.text = String.format("%s %s", gameEntity.getApk()[0].size, gameEntity.brief)
- }
-
- GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), "", gameEntity.tagStyle)
-
- holder.itemView.setOnClickListener { v ->
+ binding.root.setOnClickListener { _ ->
DataCollectionUtils.uploadClick(mContext, "大家都在玩", "游戏详情", gameEntity.name)
DataUtils.onMtaEvent(mContext, "游戏详情", "大家都在玩", gameName + "->" + gameEntity.name)
@@ -407,11 +400,11 @@ class DescAdapter(context: Context,
StringUtils.buildString(mEntrance, "+(", "游戏详情", "[", gameName, "]:大家都在玩[", (position + 1).toString(), "])"))
}
- DownloadItemUtils.setOnClickListener(mContext, holder.gameDownloadBtn, gameEntity, position, this,
+ DownloadItemUtils.setOnClickListener(mContext, binding.downloadBtn, gameEntity, position, this,
StringUtils.buildString(mEntrance, "+(游戏详情[", gameName, "]:大家都在玩[", (position + 1).toString(), "])"),
StringUtils.buildString("游戏详情:", gameEntity.name))
- DownloadItemUtils.updateItem(mContext, gameEntity, holder, true)
+ DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(binding), true)
}
fun setFuliNoData(b: Boolean) {
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 263a81e377..0443863abb 100644
--- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java
@@ -6,24 +6,23 @@ import android.support.v7.widget.RecyclerView.ViewHolder;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.gh.base.OnRequestCallBackListener;
import com.gh.common.constant.Config;
import com.gh.common.util.ApkActiveUtils;
import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
import com.gh.common.util.StringUtils;
import com.gh.common.view.DownloadDialog;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.GameDetailActivity;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameViewHolder;
+import com.gh.gamecenter.databinding.GameItemBinding;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.eventbus.EBSearch;
+import com.gh.gamecenter.game.GameItemViewHolder;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.lightgame.adapter.BaseRecyclerAdapter;
@@ -127,71 +126,56 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter {
}
@Override
- public GameNormalViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ public GameItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.game_normal_item, viewGroup, false);
- return new GameNormalViewHolder(itemView);
+ R.layout.game_item, viewGroup, false);
+ return new GameItemViewHolder(GameItemBinding.bind(itemView));
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
- final GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder;
+ GameItemViewHolder gameItemViewHolder = (GameItemViewHolder) holder;
+ final GameItemBinding binding = gameItemViewHolder.getBinding();
final GameEntity gameEntity = gameList.get(position);
+ binding.setGame(gameEntity);
+ gameItemViewHolder.initServerType(gameEntity, mContext);
+ binding.getRoot().setOnClickListener(v -> {
+ if (searchMap.get(gameEntity.getId()) == null) {
+ EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
+ searchMap.put(gameEntity.getId(), gameEntity.getName());
+ } else {
+ EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
+ }
- viewHolder.initServerType(gameEntity, mContext);
- ImageUtils.display(viewHolder.gameThumb, gameEntity.getIcon());
- viewHolder.gameName.setText(gameEntity.getName());
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- viewHolder.gameDes.setText(gameEntity.getBrief());
- } else {
- viewHolder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
+ GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
+ StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
+ String.valueOf(holder.getAdapterPosition() + 1), "])"));
+ });
- GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), "type", gameEntity.getTagStyle());
+ binding.downloadBtn.setOnClickListener(v -> {
+ Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.getWindowToken());
- viewHolder.itemView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (searchMap.get(gameEntity.getId()) == null) {
- EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
- searchMap.put(gameEntity.getId(), gameEntity.getName());
- } else {
- EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
- }
+ if (searchMap.get(gameEntity.getId()) == null) {
+ EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
+ searchMap.put(gameEntity.getId(), gameEntity.getName());
+ }
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
+ if (gameEntity.getApk().size() == 1) {
+ DownloadItemUtils.onNormalClick(mContext,
+ binding.downloadBtn, gameEntity, holder.getPosition(),
+ SearchGameDetailFragmentAdapter.this,
StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
- String.valueOf(holder.getAdapterPosition() + 1), "])"));
+ String.valueOf(holder.getAdapterPosition() + 1), "])"),
+ "搜索-列表:" + gameEntity.getName());
+ } else {
+ DownloadDialog.getInstance(mContext).showPopupWindow(v, gameEntity,
+ StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
+ String.valueOf(holder.getAdapterPosition() + 1) + "])"),
+ "搜索-列表:" + gameEntity.getName());
}
});
- viewHolder.gameDownloadBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.getWindowToken());
-
- if (searchMap.get(gameEntity.getId()) == null) {
- EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
- searchMap.put(gameEntity.getId(), gameEntity.getName());
- }
-
- if (gameEntity.getApk().size() == 1) {
- DownloadItemUtils.onNormalClick(mContext,
- viewHolder.gameDownloadBtn, gameEntity, viewHolder.getPosition(),
- SearchGameDetailFragmentAdapter.this,
- StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
- String.valueOf(holder.getAdapterPosition() + 1), "])"),
- "搜索-列表:" + gameEntity.getName());
- } else {
- DownloadDialog.getInstance(mContext).showPopupWindow(v, gameEntity,
- StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
- String.valueOf(holder.getAdapterPosition() + 1) + "])"),
- "搜索-列表:" + gameEntity.getName());
- }
- }
- });
-
- DownloadItemUtils.updateItem(mContext, gameEntity, viewHolder, true);
+ DownloadItemUtils.updateItem(mContext, gameEntity, new GameViewHolder(binding), true);
}
@Override
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 74be99e8d5..30e3a08e23 100644
--- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java
@@ -13,19 +13,19 @@ import com.gh.common.constant.Config;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.ApkActiveUtils;
import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
import com.gh.common.util.StringUtils;
import com.gh.common.view.DownloadDialog;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.GameDetailActivity;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameViewHolder;
import com.gh.gamecenter.adapter.viewholder.SearchHistoryViewHolder;
+import com.gh.gamecenter.databinding.GameItemBinding;
import com.gh.gamecenter.db.SearchHistoryDao;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.eventbus.EBSearch;
+import com.gh.gamecenter.game.GameItemViewHolder;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.lightgame.adapter.BaseRecyclerAdapter;
@@ -137,8 +137,8 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter {
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
if (viewType == ItemViewType.GAME_NORMAL) {
View itemView = LayoutInflater.from(viewGroup.getContext())
- .inflate(R.layout.game_normal_item, viewGroup, false);
- return new GameNormalViewHolder(itemView);
+ .inflate(R.layout.game_item, viewGroup, false);
+ return new GameItemViewHolder(GameItemBinding.bind(itemView));
} else if (viewType == ItemViewType.SEARCH_NORMAL) {
View itemView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.fm_search_history_item, viewGroup, false);
@@ -150,38 +150,28 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter {
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
final GameEntity gameEntity = gameList.get(position);
- if (holder instanceof GameNormalViewHolder) {
- final GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder;
-
+ if (holder instanceof GameItemViewHolder) {
+ final GameItemViewHolder viewHolder = (GameItemViewHolder) holder;
+ GameItemBinding binding = viewHolder.getBinding();
+ binding.setGame(gameEntity);
viewHolder.initServerType(gameEntity, mContext);
- ImageUtils.display(((GameNormalViewHolder) holder).gameThumb, gameEntity.getIcon());
- viewHolder.gameName.setText(gameEntity.getName());
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- viewHolder.gameDes.setText(gameEntity.getBrief());
- } else {
- viewHolder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
- GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), "type", gameEntity.getTagStyle());
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (searchMap.get(gameEntity.getId()) == null) {
- EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
- searchMap.put(gameEntity.getId(), gameEntity.getName());
- } else {
- EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
- }
-
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
- StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type + "=",
- String.valueOf(holder.getAdapterPosition() + 1), "])"));
-
- dao.add(gameEntity.getName());
+ holder.itemView.setOnClickListener(v -> {
+ if (searchMap.get(gameEntity.getId()) == null) {
+ EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
+ searchMap.put(gameEntity.getId(), gameEntity.getName());
+ } else {
+ EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
}
+
+ GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
+ StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type + "=",
+ String.valueOf(holder.getAdapterPosition() + 1), "])"));
+
+ dao.add(gameEntity.getName());
});
- viewHolder.gameDownloadBtn.setOnClickListener(new View.OnClickListener() {
+ binding.downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.getWindowToken());
@@ -193,7 +183,7 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter {
if (gameEntity.getApk().size() == 1) {
DownloadItemUtils.onNormalClick(mContext,
- viewHolder.gameDownloadBtn, gameEntity, viewHolder.getPosition(),
+ binding.downloadBtn, gameEntity, viewHolder.getPosition(),
SearchGameListFragmentAdapter.this,
StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
String.valueOf(holder.getAdapterPosition() + 1), "])"),
@@ -207,27 +197,24 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter {
}
});
- DownloadItemUtils.updateItem(mContext, gameEntity, viewHolder, true);
+ DownloadItemUtils.updateItem(mContext, gameEntity, new GameViewHolder(binding), true);
} else if (holder instanceof SearchHistoryViewHolder) {
SearchHistoryViewHolder viewHolder = (SearchHistoryViewHolder) holder;
viewHolder.searchHistoryName.setText(gameEntity.getName());
viewHolder.searchHistoryLine.setVisibility(View.GONE);
- viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (searchMap.get(gameEntity.getId()) == null) {
- EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
- searchMap.put(gameEntity.getId(), gameEntity.getName());
- } else {
- EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
- }
-
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
- StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
- String.valueOf(holder.getAdapterPosition() + 1), "])"));
- dao.add(gameEntity.getName());
+ viewHolder.itemView.setOnClickListener(v -> {
+ if (searchMap.get(gameEntity.getId()) == null) {
+ EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName()));
+ searchMap.put(gameEntity.getId(), gameEntity.getName());
+ } else {
+ EventBus.getDefault().post(new EBSearch("click", gameEntity.getId(), gameEntity.getName()));
}
+
+ GameDetailActivity.startGameDetailActivity(mContext, gameEntity,
+ StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=",
+ String.valueOf(holder.getAdapterPosition() + 1), "])"));
+ dao.add(gameEntity.getName());
});
}
}
diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java
index c0a8c21242..20845a25fd 100644
--- a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java
+++ b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java
@@ -7,15 +7,14 @@ import android.view.ViewGroup;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.common.util.PlatformUtils;
import com.gh.common.util.StringUtils;
import com.gh.gamecenter.GameDetailActivity;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameViewHolder;
+import com.gh.gamecenter.databinding.GameItemBinding;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.PluginLocation;
+import com.gh.gamecenter.game.GameItemViewHolder;
import com.lightgame.adapter.BaseRecyclerAdapter;
import java.util.List;
@@ -36,50 +35,36 @@ public class GamePluginAdapter extends BaseRecyclerAdapter {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new GameNormalViewHolder(mLayoutInflater.inflate(R.layout.game_normal_item, parent, false));
+ View view = mLayoutInflater.inflate(R.layout.game_item, parent, false);
+ return new GameItemViewHolder(GameItemBinding.bind(view));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- if (holder instanceof GameNormalViewHolder) {
- initGameNormalViewHolder((GameNormalViewHolder) holder, position);
+ if (holder instanceof GameItemViewHolder) {
+ initGameNormalViewHolder((GameItemViewHolder) holder, position);
}
}
- private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
+ private void initGameNormalViewHolder(GameItemViewHolder holder, int position) {
final GameEntity gameEntity = mPluginList.get(position);
holder.initServerType(gameEntity, mContext);
+ GameItemBinding binding = holder.getBinding();
+ binding.setGame(gameEntity);
+ binding.setIsShowPlatform(true);
+ binding.executePendingBindings();
+ holder.itemView.setOnClickListener(v -> {
+ DataCollectionUtils.uploadClick(mContext, "插件化" + "-列表", "游戏-专题", gameEntity.getName());
- ImageUtils.display(holder.gameThumb, gameEntity.getIcon());
- if (gameEntity.isPluggable() && gameEntity.getApk().size() > 0) {
- holder.gameName.setText(String.format("%s - %s", gameEntity.getName(),
- PlatformUtils.getInstance(mContext).getPlatformName(
- gameEntity.getApk().get(0).getPlatform())));
- } else {
- holder.gameName.setText(gameEntity.getName());
- }
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.setText(gameEntity.getBrief());
- } else {
- holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
- GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), null, gameEntity.getTagStyle());
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataCollectionUtils.uploadClick(mContext, "插件化" + "-列表", "游戏-专题", gameEntity.getName());
-
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity.getId(),
- StringUtils.buildString("(游戏-专题:插件化-列表[", String.valueOf(1), "])"));
- }
+ GameDetailActivity.startGameDetailActivity(mContext, gameEntity.getId(),
+ StringUtils.buildString("(游戏-专题:插件化-列表[", String.valueOf(1), "])"));
});
- DownloadItemUtils.setOnClickListener(mContext, holder.gameDownloadBtn, gameEntity, 1,
+ DownloadItemUtils.setOnClickListener(mContext, binding.downloadBtn, gameEntity, 1,
GamePluginAdapter.this,
StringUtils.buildString("(游戏-专题:", "插件化", "-列表[", String.valueOf(1), "])"),
StringUtils.buildString("游戏-专题-", "插件化", ":", gameEntity.getName()));
- DownloadItemUtils.updateItem(mContext, gameEntity, holder, !gameEntity.isPluggable(), PluginLocation.only_index);
+ DownloadItemUtils.updateItem(mContext, gameEntity, new GameViewHolder(binding), !gameEntity.isPluggable(), PluginLocation.only_index);
}
@Override
diff --git a/app/src/main/res/layout/game_item.xml b/app/src/main/res/layout/game_item.xml
index 49196a0801..a63ea8452e 100644
--- a/app/src/main/res/layout/game_item.xml
+++ b/app/src/main/res/layout/game_item.xml
@@ -7,6 +7,10 @@
name = "subjectTag"
type = "String" />
+
+
@@ -63,7 +67,7 @@
@@ -75,6 +79,8 @@