From 522dac5c6b3ab32da08bde56fa19138a21b87abb Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Tue, 16 Jul 2019 11:54:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=90=9C=E7=B4=A2=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=A1=B5=E9=9D=A2=E9=A2=84=E7=BA=A6=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=97=A0=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/DownloadItemUtils.java | 36 +++++++++++++- .../SearchGameDetailFragmentAdapter.java | 47 ++++++++---------- .../search/SearchGameListFragmentAdapter.java | 48 ++++++++----------- 3 files changed, 76 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index b638201909..72cf99fd63 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -336,6 +336,22 @@ public class DownloadItemUtils { final String location, final ExposureEvent traceEvent) { + setOnClickListener(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent, null); + } + + /** + * @param clickCallback 供那些需要知道点击回调的地方使用 + */ + public static void setOnClickListener(final Context context, + final TextView downloadBtn, + final GameEntity gameEntity, + final int position, + final RecyclerView.Adapter adapter, + final String entrance, + final String location, + final ExposureEvent traceEvent, + @Nullable final EmptyCallback clickCallback) { + if (gameEntity.isReservable()) { if (!ReservationRepository.thisGameHasBeenReserved(gameEntity.getId())) { downloadBtn.setOnClickListener(v -> { @@ -346,19 +362,35 @@ public class DownloadItemUtils { ); dialogFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "reserve"); }); + if (clickCallback != null) { + clickCallback.onCallback(); + } }); } else { downloadBtn.setOnClickListener(v -> { context.startActivity(MyGameActivity.getIntentWithConfig(context, 2)); + if (clickCallback != null) { + clickCallback.onCallback(); + } }); } return; } if (gameEntity.getApk().size() == 1) { - downloadBtn.setOnClickListener(v -> onNormalClick(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent)); + downloadBtn.setOnClickListener(v -> { + onNormalClick(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent); + if (clickCallback != null) { + clickCallback.onCallback(); + } + }); } else { - downloadBtn.setOnClickListener(v -> DownloadDialog.getInstance(context).showPopupWindow(v, gameEntity, entrance, location, traceEvent)); + downloadBtn.setOnClickListener(v -> { + DownloadDialog.getInstance(context).showPopupWindow(v, gameEntity, entrance, location, traceEvent); + if (clickCallback != null) { + clickCallback.onCallback(); + } + }); } } 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 55a83659ce..b93b101e08 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -5,6 +5,10 @@ import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; +import androidx.collection.ArrayMap; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.ViewHolder; + import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.Config; import com.gh.common.constant.ItemViewType; @@ -15,7 +19,6 @@ import com.gh.common.exposure.IExposable; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DownloadItemUtils; 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; @@ -42,9 +45,6 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import androidx.collection.ArrayMap; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.RecyclerView.ViewHolder; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; @@ -207,30 +207,25 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter im mDao.add(gameEntity.getNameWithoutSuffix()); }); - binding.downloadBtn.setOnClickListener(v -> { - Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.getWindowToken()); + DownloadItemUtils.setOnClickListener( + mContext, + binding.downloadBtn, + gameEntity, + holder.getAdapterPosition(), + this, + StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", String.valueOf(holder.getAdapterPosition() + 1), "])"), + "搜索-列表:" + gameEntity.getName(), + exposureEvent, + () -> { + Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, binding.downloadBtn.getWindowToken()); - if (searchMap.get(gameEntity.getId()) == null) { - EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName())); - searchMap.put(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()); + } - 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), "])"), - "搜索-列表:" + gameEntity.getName(), - exposureEvent); - } else { - DownloadDialog.getInstance(mContext).showPopupWindow(v, gameEntity, - StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", - String.valueOf(holder.getAdapterPosition() + 1) + "])"), - "搜索-列表:" + gameEntity.getName(), - exposureEvent); - } - }); + } + ); DownloadItemUtils.updateItem(mContext, gameEntity, new GameViewHolder(binding), true); } 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 0bfcb54c72..da8bdc5ef4 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -1,14 +1,15 @@ package com.gh.gamecenter.search; -import androidx.collection.ArrayMap; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.RecyclerView.ViewHolder; import android.text.TextUtils; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.collection.ArrayMap; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.ViewHolder; + import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.Config; import com.gh.common.constant.ItemViewType; @@ -19,7 +20,6 @@ import com.gh.common.exposure.IExposable; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DownloadItemUtils; 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; @@ -193,30 +193,24 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter impl dao.add(gameEntity.getNameWithoutSuffix()); }); - binding.downloadBtn.setOnClickListener(v -> { - Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, v.getWindowToken()); + DownloadItemUtils.setOnClickListener( + mContext, + binding.downloadBtn, + gameEntity, + viewHolder.getAdapterPosition(), + this, + StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", String.valueOf(holder.getAdapterPosition() + 1), "])"), + "搜索-列表:" + gameEntity.getName(), + exposureEvent, + () -> { + Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, binding.downloadBtn.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, - binding.downloadBtn, gameEntity, viewHolder.getPosition(), - SearchGameListFragmentAdapter.this, - StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", - String.valueOf(holder.getAdapterPosition() + 1), "])"), - "搜索-列表:" + gameEntity.getName(), - exposureEvent); - } else { - DownloadDialog.getInstance(mContext).showPopupWindow(v, gameEntity, - StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", - String.valueOf(holder.getAdapterPosition() + 1), "])"), - "搜索-列表:" + gameEntity.getName(), - exposureEvent); - } - }); + if (searchMap.get(gameEntity.getId()) == null) { + EventBus.getDefault().post(new EBSearch("search", gameEntity.getId(), gameEntity.getName())); + searchMap.put(gameEntity.getId(), gameEntity.getName()); + } + } + ); DownloadItemUtils.updateItem(mContext, gameEntity, new GameViewHolder(binding), true); } else if (holder instanceof SearchHistoryViewHolder) {