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 @@