From b8ea968a58ee5212af2a11c6b472db9ad4757ecd Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 27 Sep 2017 17:15:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E7=A6=BB=E5=88=97=E8=A1=A8=E7=9A=84on?= =?UTF-8?q?click=E4=BA=8B=E4=BB=B6=20=E8=BF=98=E6=9C=AA=E5=AE=8C=E6=88=90(?= =?UTF-8?q?=E5=A4=AA=E5=A4=AA=E5=A4=AA=E5=A4=9A=E5=95=A6),=20click=20start?= =?UTF-8?q?ActivityForResult=E7=9B=B8=E5=85=B3=E5=B7=B2=E7=BB=8F=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + .../com/gh/base/BaseRecyclerViewHolder.java | 6 +- .../java/com/gh/base/OnListClickListener.java | 11 +- .../com/gh/base/fragment/BaseFragment.java | 4 +- .../com/gh/common/constant/Constants.java | 3 + .../com/gh/common/util/CheckLoginUtils.java | 6 +- .../java/com/gh/common/util/LoginUtils.java | 16 +- .../com/gh/gamecenter/InstallActivity.java | 5 + .../com/gh/gamecenter/SuggestionActivity.java | 11 +- .../adapter/InstallFragmentAdapter.java | 31 +- .../viewholder/GameDetailFuLiViewHolder.java | 8 +- .../viewholder/GameDetailKaiFuViewHolder.java | 6 +- .../viewholder/GameDetailNewsViewHolder.java | 5 + .../GameDetailNoticeViewHolder.java | 5 + .../GameLibaoGalleryViewHolder.java | 7 + .../viewholder/LibaoNormalViewHolder.java | 7 + .../gh/gamecenter/gamedetail/FuLiAdapter.java | 65 +- .../gamecenter/gamedetail/FuliFragment.java | 74 ++- .../gamedetail/GameLibaoGalleryAdapter.java | 23 +- .../gh/gamecenter/libao/Libao2Fragment.java | 26 + .../libao/Libao2FragmentAdapter.java | 54 +- .../gh/gamecenter/libao/LibaoNewAdapter.kt | 20 +- .../gh/gamecenter/libao/LibaoNewFragment.java | 14 + .../gh/gamecenter/libao/LibaoSearchAdapter.kt | 20 +- .../gamecenter/libao/LibaoSearchFragment.java | 14 + .../com/gh/gamecenter/news/News1Fragment.java | 24 +- .../com/gh/gamecenter/news/News2Fragment.java | 116 ++-- .../com/gh/gamecenter/news/News3Fragment.java | 39 +- .../com/gh/gamecenter/news/News4Fragment.java | 26 +- .../NewsDetailCommentViewHolder.java | 6 + .../gamecenter/personal/InstallFragment.java | 162 ----- .../personal/InstallFragmentAdapter.java | 576 ------------------ .../gamecenter/suggest/SuggestPicAdapter.java | 23 +- .../suggest/SuggestPicViewHolder.java | 6 + .../main/res/layout/gamedetail_item_libao.xml | 3 +- app/src/main/res/values/styles.xml | 5 +- 36 files changed, 351 insertions(+), 1077 deletions(-) delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java diff --git a/README.md b/README.md index e5ef70600f..69b6d1adcb 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,5 @@ * accessToken 过期用refreshToken刷新并成功登录后, 有可能某个接口返回401导致页面 没显示正确 * activity 统一入口未完成(外部入口相关) * adapter 的startActivityForResult 用接口抽离 避免adapter持有Fragment/activity 对象 +* viewpager+fragment 时由于界面切换(同时在加载数据)导致的崩溃找一个新方案替换旧方案(持有fragment) diff --git a/app/src/main/java/com/gh/base/BaseRecyclerViewHolder.java b/app/src/main/java/com/gh/base/BaseRecyclerViewHolder.java index 303964fee2..c29c138296 100644 --- a/app/src/main/java/com/gh/base/BaseRecyclerViewHolder.java +++ b/app/src/main/java/com/gh/base/BaseRecyclerViewHolder.java @@ -3,8 +3,6 @@ package com.gh.base; import android.support.v7.widget.RecyclerView; import android.view.View; -import java.util.List; - import butterknife.ButterKnife; /** @@ -17,7 +15,7 @@ import butterknife.ButterKnife; public abstract class BaseRecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - private List data; + private T data; private OnListClickListener mListClickListener; public BaseRecyclerViewHolder(View itemView) { @@ -31,7 +29,7 @@ public abstract class BaseRecyclerViewHolder extends RecyclerView.ViewHolder * @param data 一般情况下只传列表数据 * @param listClickListener 列表事件接口 */ - public BaseRecyclerViewHolder(View itemView, List data, OnListClickListener listClickListener) { + public BaseRecyclerViewHolder(View itemView, T data, OnListClickListener listClickListener) { this(itemView); this.data = data; this.mListClickListener = listClickListener; diff --git a/app/src/main/java/com/gh/base/OnListClickListener.java b/app/src/main/java/com/gh/base/OnListClickListener.java index 263c240556..e6235fd3cd 100644 --- a/app/src/main/java/com/gh/base/OnListClickListener.java +++ b/app/src/main/java/com/gh/base/OnListClickListener.java @@ -2,13 +2,18 @@ package com.gh.base; import android.view.View; -import java.util.List; - /** * Created by khy on 26/09/17. */ public interface OnListClickListener { - void onListClick(View view, int position, List data); + /** + * + * @param view + * @param position list position + * @param data list data (直接强转 如果列表传入不同数据类型 请做好判断) + * @param + */ + void onListClick(View view, int position, T data); } diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index 8dbc4e1423..a21ece3d4e 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -22,8 +22,6 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import java.util.List; - import butterknife.ButterKnife; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; @@ -166,7 +164,7 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB } @Override - public void onListClick(View view, int position, List data) { + public void onListClick(View view, int position, T data) { } diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index 0404945c82..f8162b822e 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -5,6 +5,9 @@ public class Constants { public static final int SEND_NEWS_FEEDBACK = 0x126; public static final int SEND_COMMENT_FEEDBACK = 0x127; + public final static int LIST_FOOTER_ITEM = 1; + public final static int LIST_HEAD_ITEM = 1; + //手机号码匹配规则 public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; public static final String REGEX_ACCOUNT = "^[a-zA-Z_]\\w{5,17}$"; diff --git a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java index 2b0d130560..7acf2580fe 100644 --- a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java +++ b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java @@ -2,9 +2,9 @@ package com.gh.common.util; import android.content.Context; import android.content.Intent; +import android.text.TextUtils; import com.gh.gamecenter.LoginActivity; -import com.gh.gamecenter.entity.UserInfoEntity; /** * Created by khy on 28/06/17. @@ -13,8 +13,8 @@ import com.gh.gamecenter.entity.UserInfoEntity; public class CheckLoginUtils { public static void checkLogin(final Context context, OnLoggenInListener listener) { - UserInfoEntity userInfo = LoginUtils.getUserInfo(context); - if (userInfo == null) { + String token = LoginUtils.getToken(context); + if (TextUtils.isEmpty(token)) { DialogUtils.showWarningDialog(context, "登录提示", "需要登录才能使用该功能喔!", "取消", "快速登录", new DialogUtils.ConfirmListener() { @Override diff --git a/app/src/main/java/com/gh/common/util/LoginUtils.java b/app/src/main/java/com/gh/common/util/LoginUtils.java index ed1f830ddd..53cc75352e 100644 --- a/app/src/main/java/com/gh/common/util/LoginUtils.java +++ b/app/src/main/java/com/gh/common/util/LoginUtils.java @@ -360,23 +360,9 @@ public class LoginUtils { public void onFailure(HttpException e) { super.onFailure(e); Utils.toast(context, context.getString(R.string.login_failure_hint)); - if (loginTag.equals(LoginTag.qq)) { + if (loginTag != null && loginTag.equals(LoginTag.qq)) { GetLoginDataUtils.getInstance(context).QQLogout(); } -// if (e == null) { -// Utils.toast(context, "请检查网络是否可用"); -// return; -// } -// try { -// ResponseBody responseBody = e.response().errorBody(); -// String string = responseBody.string(); -// Utils.log("getUserData::" + string); -// JSONObject content = new JSONObject(string); -// int code = content.getInt("code"); -// outputErrorHint(context, code); -// } catch (Exception e1) { -// e1.printStackTrace(); -// } } }); } diff --git a/app/src/main/java/com/gh/gamecenter/InstallActivity.java b/app/src/main/java/com/gh/gamecenter/InstallActivity.java index 47f903a85b..06b55196d7 100644 --- a/app/src/main/java/com/gh/gamecenter/InstallActivity.java +++ b/app/src/main/java/com/gh/gamecenter/InstallActivity.java @@ -210,4 +210,9 @@ public class InstallActivity extends BaseActivity implements InstallFragmentAdap swipeLayout.openAndColse(); // swipeLayout.close(); } + + @Override + public void onOpen() { + startActivityForResult(ChooseReceiverActivity.getIntent(this, true), KC_REQUEST); + } } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index dee5829056..960f5b1f07 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -26,6 +26,7 @@ import android.widget.ScrollView; import android.widget.TextView; import com.gh.base.BaseActivity; +import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.Config; import com.gh.common.util.BitmapUtils; @@ -84,7 +85,7 @@ import static com.gh.gamecenter.SuggestSelectActivity.SUGGEST_TYPE_REQUEST; * Created by khy on 2017/3/31. */ public class SuggestionActivity extends BaseActivity implements SuggestTypeAdapter.OnSelectTypeListener, - OnRequestCallBackListener { + OnRequestCallBackListener, OnListClickListener { @BindView(R.id.suggest_content_et) EditText mSuggestContentEt; @@ -662,4 +663,12 @@ public class SuggestionActivity extends BaseActivity implements SuggestTypeAdapt } + @Override + public void onListClick(View view, int position, T data) { + List picList = (List) data; + if (position == mAdapter.getItemCount() - 1 && picList.size() < 5) { + Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, MEDIA_STORE_REQUEST); + } + } } 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 9023350606..a78da084c3 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java @@ -27,7 +27,6 @@ import com.gh.common.util.PlatformUtils; import com.gh.common.util.TrafficUtils; import com.gh.common.view.SwipeLayout; import com.gh.download.DownloadManager; -import com.gh.gamecenter.ChooseReceiverActivity; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.InstallActivity; import com.gh.gamecenter.R; @@ -57,8 +56,6 @@ import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; -import static com.gh.gamecenter.download.FileSendFragment.KC_REQUEST; - /** * Created by LGT on 2016/8/12. * 已安装界面-数据适配器 @@ -292,21 +289,6 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { } if (this.gameList.size() != 0) { -// ArrayMap> map = new ArrayMap<>(); -// ArrayList list; -// for (GameEntity gameEntity : this.gameList) { -// list = map.get(gameEntity.getId()); -// if (list == null) { -// list = new ArrayList<>(); -// map.put(gameEntity.getId(), list); -// } -// list.add(gameEntity); -// } -// list = new ArrayList<>(); -// for (String key : map.keySet()) { -// list.addAll(map.get(key)); -// } -// this.gameList = list; isRemove = true; notifyDataSetChanged(); @@ -486,12 +468,6 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { public void onOpen(SwipeLayout layout) { skipKc(i); holder.swipeLayout.close(); -// holder.swipeLayout.postDelayed(new Runnable() { -// @Override -// public void run() { -// notifyItemRangeChanged(0 ,getItemCount()); -// } -// }, 500); } @Override @@ -501,14 +477,12 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { @Override public void onClose(SwipeLayout layout) { isSwipe = false; -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); holder.swipeText.setText("右划发给好友\n免流量安装"); } @Override public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) { if (leftOffset > maxWidth / 2.7 && leftOffset < maxWidth / 2.5) { -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 30), 0); holder.swipeText.setVisibility(View.GONE); holder.swipeShareText.setVisibility(View.VISIBLE); } else if (leftOffset > maxWidth / 2.5) { @@ -516,7 +490,6 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { holder.swipeShareText.setVisibility(View.VISIBLE); holder.swipeShareText.setText("放手发给好友\n免流量安装"); } else if (leftOffset < maxWidth / 2.7) { -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); holder.swipeText.setVisibility(View.VISIBLE); holder.swipeShareText.setVisibility(View.GONE); holder.swipeShareText.setText("右划发给好友\n免流量安装"); @@ -559,12 +532,12 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { fileInfos.add(fileInfo); HaloApp.put(HaloApp.KEY_FILE_INFO, fileInfos); - mActivity.startActivityForResult(ChooseReceiverActivity.getIntent(mContext, true), KC_REQUEST); - + smoothListener.onOpen(); } public interface onSmoothLayoutListener { void onSmooth(); + void onOpen(); // 启动跳转 } public class KcHintViewHolder extends ViewHolder { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailFuLiViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailFuLiViewHolder.java index 5c02808243..68ad492b3a 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailFuLiViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailFuLiViewHolder.java @@ -6,6 +6,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.common.view.MarqueeView; import com.gh.gamecenter.R; @@ -35,8 +36,9 @@ public class GameDetailFuLiViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.gamedetail_item_notice_ll) public LinearLayout filiNoticeLl; - public GameDetailFuLiViewHolder(View itemView) { - super(itemView); + public GameDetailFuLiViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + fuliQqBtn.setOnClickListener(this); + fuliQqunBtn.setOnClickListener(this); } - } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailKaiFuViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailKaiFuViewHolder.java index 4e46cec71b..978936b6ac 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailKaiFuViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailKaiFuViewHolder.java @@ -8,6 +8,7 @@ import android.widget.ScrollView; import android.widget.TextView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -42,8 +43,7 @@ public class GameDetailKaiFuViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.gamedetail_calender_hint) public RelativeLayout calenderHint; - public GameDetailKaiFuViewHolder(View itemView) { - super(itemView); + public GameDetailKaiFuViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); } - } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNewsViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNewsViewHolder.java index 05c42b2abb..3446effa99 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNewsViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNewsViewHolder.java @@ -5,6 +5,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -29,4 +30,8 @@ public class GameDetailNewsViewHolder extends BaseRecyclerViewHolder { super(itemView); } + public GameDetailNewsViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + newsMore.setOnClickListener(this); + } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNoticeViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNoticeViewHolder.java index 0fce9b1414..c0f7b8a7e5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNoticeViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDetailNoticeViewHolder.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.adapter.viewholder; import android.view.View; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.common.view.MarqueeView; import com.gh.gamecenter.R; @@ -22,4 +23,8 @@ public class GameDetailNoticeViewHolder extends BaseRecyclerViewHolder { super(itemView); } + public GameDetailNoticeViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + mvNotice.setOnClickListener(this); + } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameLibaoGalleryViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameLibaoGalleryViewHolder.java index ddde825a6d..ed4a597fff 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameLibaoGalleryViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameLibaoGalleryViewHolder.java @@ -4,6 +4,7 @@ import android.view.View; import android.widget.TextView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -19,9 +20,15 @@ public class GameLibaoGalleryViewHolder extends BaseRecyclerViewHolder { public TextView libaoDes; @BindView(R.id.gamedetail_libao_btn) public TextView libaoBtn; + @BindView(R.id.gamedetail_libao_item) + public View libaoItem; public GameLibaoGalleryViewHolder(View itemView) { super(itemView); } + public GameLibaoGalleryViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + libaoItem.setOnClickListener(this); + } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoNormalViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoNormalViewHolder.java index 9b4dad7124..78ade3ee0c 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoNormalViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoNormalViewHolder.java @@ -5,6 +5,7 @@ import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -28,4 +29,10 @@ public class LibaoNormalViewHolder extends BaseRecyclerViewHolder { public LibaoNormalViewHolder(View itemView) { super(itemView); } + + public LibaoNormalViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + itemView.setOnClickListener(this); + libaoBtnStatus.setOnClickListener(this); + } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java index f885919b68..f6bc237812 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -1,7 +1,6 @@ package com.gh.gamecenter.gamedetail; import android.content.Context; -import android.content.Intent; import android.graphics.Color; import android.support.v4.content.ContextCompat; import android.support.v7.widget.GridLayoutManager; @@ -17,17 +16,15 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; +import com.gh.base.OnListClickListener; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.LibaoUtils; import com.gh.common.util.NewsUtils; -import com.gh.common.util.QQUtils; -import com.gh.common.util.StringUtils; import com.gh.common.view.GridDivider; import com.gh.common.view.MarqueeView; import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.GameNewsActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; @@ -74,6 +71,8 @@ import rx.schedulers.Schedulers; */ public class FuLiAdapter extends BaseRecyclerAdapter { + private OnListClickListener mListListener; + private List mLibaoList; private List mToolBoxList; @@ -91,10 +90,12 @@ public class FuLiAdapter extends BaseRecyclerAdapter { private boolean isOpenToolList; - public FuLiAdapter(Context context, String entrance, GameEntity gameEntity, GameDetailEntity detailEntity) { + public FuLiAdapter(Context context, String entrance, GameEntity gameEntity, + GameDetailEntity detailEntity, OnListClickListener listener) { super(context); this.entrance = entrance; + this.mListListener = listener; isOpenLibaoList = false; mToolBoxList = new ArrayList<>(); @@ -344,19 +345,19 @@ public class FuLiAdapter extends BaseRecyclerAdapter { switch (viewType) { case 1: view = mLayoutInflater.inflate(R.layout.gamedetail_item_notice, parent, false); - return new GameDetailNoticeViewHolder(view); + return new GameDetailNoticeViewHolder(view, mGameDetailEntity, mListListener); case 2: view = mLayoutInflater.inflate(R.layout.gamedetail_item_news, parent, false); - return new GameDetailNewsViewHolder(view); + return new GameDetailNewsViewHolder(view, mGameDetailEntity, mListListener); case 3: view = mLayoutInflater.inflate(R.layout.gamedetail_item_fuli, parent, false); - return new GameDetailFuLiViewHolder(view); + return new GameDetailFuLiViewHolder(view, mGameDetailEntity, mListListener); case 4: view = mLayoutInflater.inflate(R.layout.gamedetail_item_libao_rv, parent, false); return new GameDetaiLibaoViewHolder(view); case 5: view = mLayoutInflater.inflate(R.layout.gamedetail_item_kaifu, parent, false); - return new GameDetailKaiFuViewHolder(view); + return new GameDetailKaiFuViewHolder(view, mGameDetailEntity, mListListener); case 6: RelativeLayout layout = new RelativeLayout(mContext); layout.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(mContext, 35))); @@ -463,15 +464,6 @@ public class FuLiAdapter extends BaseRecyclerAdapter { list.add(newsEntity.getTitle()); } mvNotice.startWithList(list); - - mvNotice.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - int index = mvNotice.getDisplayedChild(); - NewsDetailActivity.startNewsDetailActivity(mContext, notice.get(index), - StringUtils.buildString(entrance, "游戏详情[", mGameEntity.getName(), "]:公告")); - } - }); } else { mvNotice.setVisibility(View.GONE); } @@ -504,29 +496,10 @@ public class FuLiAdapter extends BaseRecyclerAdapter { viewHolder.newsMore.setVisibility(View.GONE); } else { viewHolder.newsMore.setVisibility(View.VISIBLE); - viewHolder.newsMore.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mGameDetailEntity.getArticleTypes() != null - && mGameEntity.getId() != null - && mGameEntity.getName() != null) { - Map kv = new HashMap<>(); - kv.put("名字", mGameEntity.getName()); - kv.put("位置", "资讯攻略-全部"); - DataUtils.onEvent(mContext, "点击", "游戏详情", kv); - - DataCollectionUtils.uploadClick(mContext, "资讯攻略-全部", "游戏详情", mGameEntity.getName()); - - Intent intent = GameNewsActivity.getIntent(mContext, mGameEntity.getName(), mGameEntity.getId(), - entrance + "+(游戏详情[" + mGameEntity.getName() + "]:资讯攻略-全部)"); - mContext.startActivity(intent); - } - } - }); } final List newsList = mGameDetailEntity.getNews(); int childCount = viewHolder.newsList.getChildCount(); - if (childCount == 0) { + if (childCount == 0) { // TODO: 27/09/17 整理/重做 点击事件移到Fragment for (int i = 0, size = newsList.size(); i < size; i++) { View view = mLayoutInflater.inflate(R.layout.gamedetail_news_item, null); @@ -580,7 +553,7 @@ public class FuLiAdapter extends BaseRecyclerAdapter { viewHolder.libaoRv.setLayoutParams(params2); viewHolder.libaoRv.setLayoutManager(new LinearLayoutManager(mContext)); viewHolder.libaoRv.setAdapter(new GameLibaoGalleryAdapter(mContext, mLibaoList, - entrance + "+(游戏详情[" + mGameEntity.getName() + "]:游戏礼包")); + entrance + "+(游戏详情[" + mGameEntity.getName() + "]:游戏礼包", mListListener)); viewHolder.openList.setOnClickListener(new View.OnClickListener() { @Override @@ -616,20 +589,6 @@ public class FuLiAdapter extends BaseRecyclerAdapter { viewHolder.fuliDes.setText(Html.fromHtml(mGameDetailEntity.getFulishuoming())); } - viewHolder.fuliQqunBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - QQUtils.joinQQGroup(mContext, mGameDetailEntity.getContact().getPlayer().getKey()); - } - }); - - viewHolder.fuliQqBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - QQUtils.startQQSession(mContext, contact.getService().getQq()); - } - }); - viewHolder.filiNoticeLl.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java index 950f954394..a409fd0258 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java @@ -1,5 +1,6 @@ package com.gh.gamecenter.gamedetail; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; @@ -7,18 +8,31 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; +import com.gh.common.util.QQUtils; +import com.gh.common.util.StringUtils; +import com.gh.common.view.MarqueeView; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.GameDetailActivity; +import com.gh.gamecenter.GameNewsActivity; +import com.gh.gamecenter.LibaoDetailActivity; +import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.GameDetailEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.LibaoEntity; +import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.eventbus.EBReuse; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by khy on 2017/3/24. @@ -33,11 +47,21 @@ public class FuliFragment extends BaseFragment { private GameEntity mGameEntity; private GameDetailEntity mDetailEntity; + private final static int GAME_DETAIL_LIBAO_REQUEST = 23; + private boolean isCanScroll; private boolean isCanShowKaiFuHint; private int indexHeight = 0; + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == GAME_DETAIL_LIBAO_REQUEST) { + mAdapter.notifyDataSetChanged(); + } + } + @Override protected int getLayoutId() { return R.layout.fragment_fuli; @@ -53,7 +77,7 @@ public class FuliFragment extends BaseFragment { mRecyclerView = view.findViewById(R.id.fm_fuli_rv); - mAdapter = new FuLiAdapter(getContext(), mEntrance, mGameEntity, mDetailEntity); + mAdapter = new FuLiAdapter(getContext(), mEntrance, mGameEntity, mDetailEntity, this); mRecyclerView.setAdapter(mAdapter); layoutManager = new LinearLayoutManager(getContext()) { @@ -119,4 +143,52 @@ public class FuliFragment extends BaseFragment { } } + @Override + public void onListClick(View view, int position, Object data) { + super.onListClick(view, position, data); + GameDetailEntity detailEntity; + switch (view.getId()) { + case R.id.gamedetail_item_notice: + detailEntity = (GameDetailEntity) data; + List notice = detailEntity.getNotice(); + if (notice != null && view instanceof MarqueeView) { + MarqueeView marqueeView = (MarqueeView) view; + int index = marqueeView.getDisplayedChild(); + NewsDetailActivity.startNewsDetailActivity(getContext(), notice.get(index), + StringUtils.buildString(mEntrance, "游戏详情[", mGameEntity.getName(), "]:公告")); + } + break; + case R.id.gamedetail_item_news_more: + if (mGameEntity.getId() != null && mGameEntity.getName() != null) { + Map kv = new HashMap<>(); + kv.put("名字", mGameEntity.getName()); + kv.put("位置", "资讯攻略-全部"); + DataUtils.onEvent(getContext(), "点击", "游戏详情", kv); + + DataCollectionUtils.uploadClick(getContext(), "资讯攻略-全部", "游戏详情", mGameEntity.getName()); + + Intent intent = GameNewsActivity.getIntent(getContext(), mGameEntity.getName(), mGameEntity.getId(), + mEntrance + "+(游戏详情[" + mGameEntity.getName() + "]:资讯攻略-全部)"); + getContext().startActivity(intent); + } + break; + case R.id.gamedetail_qqun_btn: + detailEntity = (GameDetailEntity) data; + if (detailEntity.getContact() != null && detailEntity.getContact().getPlayer() != null) + QQUtils.joinQQGroup(getContext(), detailEntity.getContact().getPlayer().getKey()); + break; + case R.id.gamedetail_qq_btn: + detailEntity = (GameDetailEntity) data; + if (detailEntity.getContact() != null && detailEntity.getContact().getService() != null) + QQUtils.startQQSession(getContext(), detailEntity.getContact().getService().getQq()); + break; + case R.id.gamedetail_libao_item: + List libaoList = (List) data; + Intent intent = LibaoDetailActivity.getIntent(getContext(), libaoList.get(position), + mEntrance + "[" + position + "]"); + startActivityForResult(intent, GAME_DETAIL_LIBAO_REQUEST); + break; + } + + } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java index 936d45b44b..6facc80f22 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java @@ -1,17 +1,16 @@ package com.gh.gamecenter.gamedetail; import android.content.Context; -import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; -import com.lightgame.adapter.BaseRecyclerAdapter; -import com.gh.gamecenter.LibaoDetailActivity; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameLibaoGalleryViewHolder; import com.gh.gamecenter.entity.LibaoEntity; +import com.lightgame.adapter.BaseRecyclerAdapter; import java.util.List; @@ -20,11 +19,13 @@ import java.util.List; */ class GameLibaoGalleryAdapter extends BaseRecyclerAdapter { + private OnListClickListener mListListener; private List mLibaoList; private String mEntrance; - GameLibaoGalleryAdapter(Context context, List libaoList, String entrance) { + GameLibaoGalleryAdapter(Context context, List libaoList, String entrance, OnListClickListener listListener) { super(context); + mListListener = listListener; mLibaoList = libaoList; mEntrance = entrance; } @@ -32,7 +33,7 @@ class GameLibaoGalleryAdapter extends BaseRecyclerAdapter")) { - content = content.replaceAll("
", " "); + content = content.replaceAll("
", " "); } holder.libaoDes.setText(content); if (libaoEntity.getStatus() == null) return; @@ -99,16 +100,6 @@ class GameLibaoGalleryAdapter extends BaseRecyclerAdapter libaoList = (List) data; + LibaoEntity libaoEntity = libaoList.get(position - LIST_HEAD_ITEM); + adapter.setSkipPosition(position); + intent = LibaoDetailActivity.getIntent(getContext(), libaoEntity, mEntrance + "+(礼包中心:关注)"); + startActivityForResult(intent, LIBAO_CONCERN_REQUEST); + break; + } + } } diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java index 948157a1e1..db4854d320 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java @@ -1,6 +1,5 @@ package com.gh.gamecenter.libao; -import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.text.TextUtils; @@ -8,14 +7,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.ItemViewType; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.LibaoUtils; import com.gh.common.util.PlatformUtils; -import com.gh.gamecenter.ConcernActivity; -import com.gh.gamecenter.LibaoDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.LibaoNormalViewHolder; @@ -34,8 +32,8 @@ import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; -import static com.gh.gamecenter.libao.Libao2Fragment.CONCERN_CHANGE_REQUEST; -import static com.gh.gamecenter.libao.Libao2Fragment.LIBAO_CONCERN_REQUEST; +import static com.gh.common.constant.Constants.LIST_FOOTER_ITEM; +import static com.gh.common.constant.Constants.LIST_HEAD_ITEM; /** * Created by khy on 2016/12/12. @@ -45,6 +43,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { private Libao2Fragment mLibao2Fragment; private OnRequestCallBackListener mCallBackListener; + private OnListClickListener mListListener; private List mLibaoList; @@ -61,6 +60,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { super(libao2Fragment.getActivity()); mLibao2Fragment = libao2Fragment; mCallBackListener = libao2Fragment; + mListListener = libao2Fragment; mEntrance = entrance; @@ -160,13 +160,13 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { switch (viewType) { case ItemViewType.LIBAO_SKIP_CONCERN: view = mLayoutInflater.inflate(R.layout.newsdetail_item_comment, parent, false); - return new NewsDetailCommentViewHolder(view); + return new NewsDetailCommentViewHolder(view, null, mListListener); case ItemViewType.LOADING: view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view); default: view = mLayoutInflater.inflate(R.layout.libao_item, parent, false); - return new LibaoNormalViewHolder(view); + return new LibaoNormalViewHolder(view, mLibaoList, mListListener); } } @@ -195,16 +195,15 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { @Override public int getItemCount() { if (mLibaoList.size() == 0) { - return 1; + return LIST_HEAD_ITEM; } - return mLibaoList.size() + 2; + return mLibaoList.size() + LIST_FOOTER_ITEM + LIST_HEAD_ITEM; } private void initLibaoViewHolder(final LibaoNormalViewHolder holder, final int position) { - final LibaoEntity libaoEntity = mLibaoList.get(position - 1); + LibaoEntity libaoEntity = mLibaoList.get(position - 1); holder.libaoName.setText(libaoEntity.getName()); -// holder.libaoGameIcon.setImageURI(libaoEntity.getIcon()); ImageUtils.Companion.display(holder.libaoGameIcon, libaoEntity.getIcon()); if (TextUtils.isEmpty(libaoEntity.getPlatform())) { holder.libaoGameName.setText(libaoEntity.getGame().getName()); @@ -223,32 +222,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { if (libaoEntity.getStatus() != null) { LibaoUtils.initLibaoBtn(mContext, holder.libaoBtnStatus, libaoEntity, false, null, mEntrance + "+(礼包中心:关注)"); - holder.libaoBtnStatus.setClickable(false); - String tv = holder.libaoBtnStatus.getText().toString(); - if ("已结束".equals(tv) || "已领光".equals(tv)) { - holder.libaoBtnStatus.setClickable(true); - } else { - holder.libaoBtnStatus.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startLibaoDetailActivity(position, libaoEntity); - } - }); - } } - - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startLibaoDetailActivity(position, libaoEntity); - } - }); - } - - public void startLibaoDetailActivity(int position, LibaoEntity libaoEntity) { - skipPosition = position; - Intent intent = LibaoDetailActivity.getIntent(mContext, libaoEntity, mEntrance + "+(礼包中心:关注)"); - mLibao2Fragment.startActivityForResult(intent, LIBAO_CONCERN_REQUEST); } private void initSkipCommentViewHolder(NewsDetailCommentViewHolder holder) { @@ -258,14 +232,6 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { holder.itemView.setLayoutParams(params); holder.commentTv.setText("管理我的关注"); - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = ConcernActivity.getIntent(mContext, mEntrance + "+(礼包中心:关注)"); - mLibao2Fragment.startActivityForResult(intent, CONCERN_CHANGE_REQUEST); - } - }); - } private void initFooterViewHolder(FooterViewHolder holder) { diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt index 04848df1c6..0d0da5bda6 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt @@ -4,13 +4,13 @@ import android.support.v7.widget.RecyclerView import android.text.TextUtils import android.view.View import android.view.ViewGroup +import com.gh.base.OnListClickListener import com.gh.base.OnRequestCallBackListener import com.gh.common.constant.ItemViewType import com.gh.common.util.ImageUtils import com.gh.common.util.LibaoUtils import com.gh.common.util.PlatformUtils import com.gh.common.util.StringUtils -import com.gh.gamecenter.LibaoDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.LibaoNormalViewHolder @@ -33,6 +33,7 @@ class LibaoNewAdapter(callBackListener: OnRequestCallBackListener, private val mFragment: LibaoNewFragment = fragment private val mCallBackListener: OnRequestCallBackListener = callBackListener + private val mListListener: OnListClickListener = fragment private val mLibaoList: MutableList = ArrayList() private val mEntrance: String = entrance @@ -141,7 +142,7 @@ class LibaoNewAdapter(callBackListener: OnRequestCallBackListener, } else -> { view = mLayoutInflater.inflate(R.layout.libao_item, parent, false) - return LibaoNormalViewHolder(view) + return LibaoNormalViewHolder(view, mLibaoList, mListListener) } } } @@ -205,21 +206,8 @@ class LibaoNewAdapter(callBackListener: OnRequestCallBackListener, if (libaoEntity.status != null) { LibaoUtils.initLibaoBtn(mContext, holder.libaoBtnStatus, libaoEntity, false, null, mEntrance + "+(礼包中心:最新)") - val tv = holder.libaoBtnStatus.text.toString() - if ("已结束" == tv || "已领光" == tv) { - holder.libaoBtnStatus.isClickable = true - } else { - holder.libaoBtnStatus.setOnClickListener({ startLibaoDetailActivity(position, libaoEntity) }) - } } - - holder.itemView.setOnClickListener({ startLibaoDetailActivity(position, libaoEntity) }) - } - - fun startLibaoDetailActivity(position: Int, libaoEntity: LibaoEntity) { - skipPosition = position - val intent = LibaoDetailActivity.getIntent(mContext, libaoEntity, mEntrance + "+(礼包中心:最新)") - mFragment.startActivityForResult(intent, LibaoNewFragment.LIBAO_NEW_REQUEST) + holder.libaoBtnStatus.isClickable = false } fun getLibaoListSize(): Int { diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java index e43aea1013..2f3520053b 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java @@ -15,11 +15,15 @@ import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; import com.gh.common.view.SwipeLayout; import com.gh.common.view.VerticalItemDecoration; +import com.gh.gamecenter.LibaoDetailActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.LibaoEntity; import com.gh.gamecenter.eventbus.EBReuse; import org.greenrobot.eventbus.EventBus; +import java.util.List; + import butterknife.BindView; /** @@ -252,4 +256,14 @@ public class LibaoNewFragment extends BaseFragment implements SwipeRefreshLayout ((Libao1Fragment) parentFragment).colseRefresh(); } } + + @Override + public void onListClick(View view, int position, Object data) { + super.onListClick(view, position, data); + List libaoList = (List) data; + LibaoEntity libaoEntity = libaoList.get(position); + mAdapter.setSkipPosition(position); + Intent intent = LibaoDetailActivity.getIntent(getContext(), libaoEntity, mEntrance + "+(礼包中心:最新)"); + startActivityForResult(intent, LibaoSearchFragment.LIBAO_SEARCH_REQUEST); + } } diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt index 947189b128..f50e18125d 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt @@ -4,13 +4,13 @@ import android.support.v7.widget.RecyclerView import android.text.TextUtils import android.view.View import android.view.ViewGroup +import com.gh.base.OnListClickListener import com.gh.base.OnRequestCallBackListener import com.gh.common.constant.ItemViewType import com.gh.common.util.ImageUtils import com.gh.common.util.LibaoUtils import com.gh.common.util.PlatformUtils import com.gh.common.util.StringUtils -import com.gh.gamecenter.LibaoDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.LibaoNormalViewHolder @@ -33,6 +33,7 @@ class LibaoSearchAdapter(fragment: LibaoSearchFragment, private val mFragment: LibaoSearchFragment = fragment private val mCallBackListener: OnRequestCallBackListener = callBackListener + private val mListListener: OnListClickListener = fragment private val mLibaoList: MutableList = ArrayList() private val mEntrance: String = entrance @@ -153,7 +154,7 @@ class LibaoSearchAdapter(fragment: LibaoSearchFragment, } else -> { view = mLayoutInflater.inflate(R.layout.libao_item, parent, false) - return LibaoNormalViewHolder(view) + return LibaoNormalViewHolder(view, mLibaoList, mListListener) } } } @@ -217,21 +218,8 @@ class LibaoSearchAdapter(fragment: LibaoSearchFragment, if (libaoEntity.status != null) { LibaoUtils.initLibaoBtn(mContext, holder.libaoBtnStatus, libaoEntity, false, null, mEntrance + "+(礼包中心:最新)") - val tv = holder.libaoBtnStatus.text.toString() - if ("已结束" == tv || "已领光" == tv) { - holder.libaoBtnStatus.isClickable = true - } else { - holder.libaoBtnStatus.setOnClickListener({ startLibaoDetailActivity(position, libaoEntity) }) - } } - - holder.itemView.setOnClickListener({ startLibaoDetailActivity(position, libaoEntity) }) - } - - fun startLibaoDetailActivity(position: Int, libaoEntity: LibaoEntity) { - skipPosition = position - val intent = LibaoDetailActivity.getIntent(mContext, libaoEntity, mEntrance + "+(礼包中心:最新)") - mFragment.startActivityForResult(intent, LibaoSearchFragment.LIBAO_SEARCH_REQUEST) + holder.libaoBtnStatus.isClickable = false } fun getLibaoListSize(): Int { diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java index 99e54665a8..ef46417bef 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java @@ -11,7 +11,11 @@ import android.widget.LinearLayout; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; import com.gh.common.view.VerticalItemDecoration; +import com.gh.gamecenter.LibaoDetailActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.LibaoEntity; + +import java.util.List; import butterknife.BindView; @@ -137,4 +141,14 @@ public class LibaoSearchFragment extends BaseFragment implements SwipeRefreshLay } postRunnable(runnable); } + + @Override + public void onListClick(View view, int position, Object data) { + super.onListClick(view, position, data); + List libaoList = (List) data; + LibaoEntity libaoEntity = libaoList.get(position); + mAdapter.setSkipPosition(position); + Intent intent = LibaoDetailActivity.getIntent(getContext(), libaoEntity, mEntrance + "+(礼包中心:最新)"); + startActivityForResult(intent, LibaoSearchFragment.LIBAO_SEARCH_REQUEST); + } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java index 07c0dc5971..efca3523c3 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -144,20 +144,18 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override - public void onListClick(View view, int position, List data) { - Object dataEntity = data.get(position); - if (dataEntity instanceof NewsEntity) { - NewsEntity newsEntity = (NewsEntity) dataEntity; - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(position + 1)); - DataUtils.onEvent(getContext(), "点击", "资讯-资讯", kv); + public void onListClick(View view, int position, Object data) { + List newsList = (List) data; + NewsEntity newsEntity = newsList.get(position); + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(position + 1)); + DataUtils.onEvent(getContext(), "点击", "资讯-资讯", kv); - DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-资讯", newsEntity.getTitle()); + DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-资讯", newsEntity.getTitle()); - //统计阅读量 - adapter.statNewsViews(newsEntity, position); - NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, StringUtils.buildString("(资讯:资讯[" + position + "])")); - } + //统计阅读量 + adapter.statNewsViews(newsEntity, position); + NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, StringUtils.buildString("(资讯:资讯[" + position + "])")); } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java index a6206766f2..60572031db 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java @@ -506,69 +506,67 @@ public class News2Fragment extends BaseFragment implements SwipeRefreshLayout.On } @Override - public void onListClick(View view, int position, List data) { + public void onListClick(View view, int position, Object data) { super.onListClick(view, position, data); - Object objectEntity = data.get(position); - if (objectEntity instanceof ConcernEntity) { - ConcernEntity concernEntity = (ConcernEntity) objectEntity; - Intent intent; - switch (view.getId()) { - case R.id.news_digest_comment: - adapter.setSkipPosition(position); - intent = MessageDetailActivity.getIntentByEntity(getContext(), concernEntity, + List concernList = (List) data; + ConcernEntity concernEntity = concernList.get(position); + Intent intent; + switch (view.getId()) { + case R.id.news_digest_comment: + adapter.setSkipPosition(position); + intent = MessageDetailActivity.getIntentByEntity(getContext(), concernEntity, + StringUtils.buildString("(资讯:关注[" + position + "])")); + startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); + break; + case R.id.news_digest_share: + String shareContent; + if (concernEntity.getBrief() != null) { + shareContent = concernEntity.getBrief(); + } else { + shareContent = concernEntity.getContent(); + } + if (concernEntity.getImg() != null && concernEntity.getImg().size() > 0) { + ShareCardPicActivity.startShareCardPicActivity(getContext(), concernEntity, StringUtils.buildString("(资讯:关注[" + position + "])")); - startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); - break; - case R.id.news_digest_share: - String shareContent; - if (concernEntity.getBrief() != null) { - shareContent = concernEntity.getBrief(); - } else { - shareContent = concernEntity.getContent(); - } - if (concernEntity.getImg() != null && concernEntity.getImg().size() > 0) { - ShareCardPicActivity.startShareCardPicActivity(getContext(), concernEntity, - StringUtils.buildString("(资讯:关注[" + position + "])")); - } else { - startActivity(ShareCardActivity.getIntent(getContext(), concernEntity, shareContent)); - } - break; - default: // 默认是 viewholder item - if ("libao".equals(concernEntity.getType())) { - LibaoEntity entity = null; - for (LibaoStatusEntity libaoStatusEntity : adapter.getLibaoStatusList()) { - if (concernEntity.getId().equals(libaoStatusEntity.getId())) { - entity = LibaoEntity.Companion.createLibaoEntity(concernEntity, libaoStatusEntity); - } - } - adapter.setSkipPosition(position); - intent = LibaoDetailActivity.getIntent(getContext(), entity, - StringUtils.buildString("(资讯:关注[" + position + "])")); - startActivityForResult(intent, NEWS2_LIBAO_REQUEST); - } else { - Map kv = new HashMap<>(); - kv.put("名字", concernEntity.getTitle()); - kv.put("位置", String.valueOf(position + 1)); - DataUtils.onEvent(getContext(), "点击", "资讯-关注", kv); - - DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-关注", concernEntity.getTitle()); - - //统计阅读量 - adapter.statNewsViews(concernEntity, position); - HaloApp.put("ConcernEntity", concernEntity); - adapter.setSkipPosition(position); - if (concernEntity.getLink() != null) { - intent = WebActivity.getIntentByNews(getContext(), concernEntity, - StringUtils.buildString("(资讯:关注[" + position + "])")); - startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); - } else { - intent = NewsDetailActivity.getIntentById(getContext(), concernEntity.getId() - , StringUtils.buildString("(资讯:关注[" + position + "])")); - startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); + } else { + startActivity(ShareCardActivity.getIntent(getContext(), concernEntity, shareContent)); + } + break; + default: // 默认是 viewholder item + if ("libao".equals(concernEntity.getType())) { + LibaoEntity entity = null; + for (LibaoStatusEntity libaoStatusEntity : adapter.getLibaoStatusList()) { + if (concernEntity.getId().equals(libaoStatusEntity.getId())) { + entity = LibaoEntity.Companion.createLibaoEntity(concernEntity, libaoStatusEntity); } } - break; - } + adapter.setSkipPosition(position); + intent = LibaoDetailActivity.getIntent(getContext(), entity, + StringUtils.buildString("(资讯:关注[" + position + "])")); + startActivityForResult(intent, NEWS2_LIBAO_REQUEST); + } else { + Map kv = new HashMap<>(); + kv.put("名字", concernEntity.getTitle()); + kv.put("位置", String.valueOf(position + 1)); + DataUtils.onEvent(getContext(), "点击", "资讯-关注", kv); + + DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-关注", concernEntity.getTitle()); + + //统计阅读量 + adapter.statNewsViews(concernEntity, position); + HaloApp.put("ConcernEntity", concernEntity); + adapter.setSkipPosition(position); + if (concernEntity.getLink() != null) { + intent = WebActivity.getIntentByNews(getContext(), concernEntity, + StringUtils.buildString("(资讯:关注[" + position + "])")); + startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); + } else { + intent = NewsDetailActivity.getIntentById(getContext(), concernEntity.getId() + , StringUtils.buildString("(资讯:关注[" + position + "])")); + startActivityForResult(intent, NEWS2_ARTICLE_REQUEST); + } + } + break; } } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java index 9b922417e3..fe359a1824 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java @@ -121,7 +121,7 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void call(Void aVoid) { if (mConcernGame.size() > 1 || (mConcernGame.size() == 1 - &&!"5618b86e8ab49e17088b4575".equals(mConcernGame.get(0).getId()))) { // 5618b86e8ab49e17088b4575 : 光环助手 id + && !"5618b86e8ab49e17088b4575".equals(mConcernGame.get(0).getId()))) { // 5618b86e8ab49e17088b4575 : 光环助手 id OnSelectGameClickListener(); } else { Intent intent = ConcernActivity.getIntent(getContext(), "资讯(攻略-我关注的游戏)"); @@ -138,7 +138,7 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On .getConcern() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>(){ + .subscribe(new Response>() { @Override public void onResponse(List response) { super.onResponse(response); @@ -258,27 +258,24 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On } @Override - public void onListClick(View view, int position, List data) { + public void onListClick(View view, int position, Object data) { super.onListClick(view, position, data); - Object objectEntity = data.get(position); - if (objectEntity instanceof NewsEntity) { - NewsEntity newsEntity = (NewsEntity) objectEntity; - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(position + 1)); - DataUtils.onEvent(getContext(), "点击", "资讯-攻略", kv); + List newsList = (List) data; + NewsEntity newsEntity = newsList.get(position); + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(position + 1)); + DataUtils.onEvent(getContext(), "点击", "资讯-攻略", kv); - Map map = new HashMap<>(); - map.put("page", "资讯-攻略"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(getContext(), "click-item", map); - - // 统计阅读量 - NewsUtils.statNewsViews(getContext(), newsEntity.getId()); - NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, - StringUtils.buildString("(资讯:攻略[" + position + "])")); - } + Map map = new HashMap<>(); + map.put("page", "资讯-攻略"); + map.put("news", newsEntity.getTitle()); + map.put("news_id", newsEntity.getId()); + DataCollectionManager.onEvent(getContext(), "click-item", map); + // 统计阅读量 + NewsUtils.statNewsViews(getContext(), newsEntity.getId()); + NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, + StringUtils.buildString("(资讯:攻略[" + position + "])")); } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index 2758587913..15c524d89c 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -143,22 +143,20 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On } @Override - public void onListClick(View view, int position, List data) { + public void onListClick(View view, int position, Object data) { super.onListClick(view, position, data); - Object dataEntity = data.get(position); - if (dataEntity instanceof NewsEntity) { - NewsEntity newsEntity = (NewsEntity) dataEntity; - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(position + 1)); - DataUtils.onEvent(getContext(), "点击", "资讯-原创", kv); + List newsList = (List) data; + NewsEntity newsEntity = newsList.get(position); + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(position + 1)); + DataUtils.onEvent(getContext(), "点击", "资讯-原创", kv); - DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-原创", newsEntity.getTitle()); + DataCollectionUtils.uploadClick(getContext(), "列表", "资讯-原创", newsEntity.getTitle()); - //统计阅读量 - adapter.statNewsViews(newsEntity, position); - NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, - StringUtils.buildString("(资讯:原创[" + position + "])")); - } + //统计阅读量 + adapter.statNewsViews(newsEntity, position); + NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, + StringUtils.buildString("(资讯:原创[" + position + "])")); } } diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java index 59a668e88f..71708b7247 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java @@ -4,6 +4,7 @@ import android.view.View; import android.widget.TextView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -19,4 +20,9 @@ public class NewsDetailCommentViewHolder extends BaseRecyclerViewHolder { public NewsDetailCommentViewHolder(View itemView) { super(itemView); } + + public NewsDetailCommentViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + commentTv.setOnClickListener(this); + } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java deleted file mode 100644 index 83b0202b94..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.gh.gamecenter.personal; - -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.gh.base.fragment.BaseFragment; -import com.gh.common.util.DialogUtils; -import com.gh.common.util.DownloadItemUtils; -import com.gh.common.view.SwipeLayout; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.download.DownloadManager; -import com.gh.gamecenter.MainActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.eventbus.EBPackage; -import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.eventbus.EBSkip; -import com.lightgame.download.DataWatcher; -import com.lightgame.download.DownloadEntity; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; - -import butterknife.BindView; - -import static com.gh.gamecenter.download.FileSendFragment.KC_REQUEST; - -/** - * Created by LGT on 2016/8/12. - * 我的关注-已安装界面 - */ -public class InstallFragment extends BaseFragment implements InstallFragmentAdapter.onSmoothLayoutListener { - - @BindView(R.id.fm_install_rv_show) - RecyclerView fm_install_rv_show; - @BindView(R.id.reuse_nodata_skip) - LinearLayout reuse_nodata_skip; - @BindView(R.id.reuse_nodata_skip_tv_hint) - TextView reuse_nodata_skip_tv_hint; - @BindView(R.id.reuse_nodata_skip_tv_btn) - TextView reuse_nodata_skip_tv_btn; - - private InstallFragmentAdapter adapter; - - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged(DownloadEntity downloadEntity) { - ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName()); - if (locationList != null && locationList.size() != 0) { - GameEntity gameEntity; - for (int location : locationList) { - gameEntity = adapter.getGameList().get(location); - if (gameEntity != null) { - DownloadItemUtils.processDate(getActivity(), gameEntity, - downloadEntity, adapter, location); - } - } - } - } - }; - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - - // 分享成绩单 - if (requestCode == KC_REQUEST) { - DialogUtils.showKuaiChuanResult(getActivity(), new Handler(), requestCode, "shareKc.jpg"); - - } - } - - @Override - protected int getLayoutId() { - return R.layout.fm_install; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - reuse_nodata_skip.setVisibility(View.GONE); - reuse_nodata_skip_tv_hint.setText("暂无游戏"); - reuse_nodata_skip_tv_btn.setText("查看精品推荐"); - reuse_nodata_skip_tv_btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 1)); - } - }); - - fm_install_rv_show.setHasFixedSize(true); - fm_install_rv_show.setLayoutManager(new LinearLayoutManager(getActivity())); - adapter = new InstallFragmentAdapter(this); - fm_install_rv_show.addItemDecoration(new VerticalItemDecoration(getContext(), 1, true)); - fm_install_rv_show.setAdapter(adapter); - } - - @Override - public void onResume() { - if (isEverPause) { - for (GameEntity entity : adapter.getGameList()) { - entity.setEntryMap(DownloadManager.getInstance(getActivity()).getEntryMap(entity.getName())); - } - adapter.notifyDataSetChanged(); - } - super.onResume(); - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - } - - @Override - public void onPause() { - super.onPause(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - } - - @Override - public void loadEmpty() { - fm_install_rv_show.setVisibility(View.GONE); - reuse_nodata_skip.setVisibility(View.VISIBLE); -// EventBus.getDefault().post(new EBReuse(PersonalFragment.NO_INSTALL_HINT)); - } - - // 打开下载按钮事件 - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBReuse reuse) { - if (("Refresh".equals(reuse.getType()) || "PlatformChanged".equals(reuse.getType())) - && adapter != null) { - adapter.notifyItemRangeChanged(0, adapter.getItemCount()); - } - } - - //安装、卸载事件 - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBPackage busFour) { - if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) { - fm_install_rv_show.setVisibility(View.VISIBLE); - reuse_nodata_skip.setVisibility(View.GONE); - adapter = new InstallFragmentAdapter(this); - fm_install_rv_show.setAdapter(adapter); - } - } - - // 滑动item - @Override - public void onSmooth() { - View childAt = fm_install_rv_show.getChildAt(fm_install_rv_show.getChildCount() - 2); - SwipeLayout swipeLayout = (SwipeLayout) childAt.findViewById(R.id.swipeLayout); - if (swipeLayout == null) return; -// swipeLayout.openAndColse(); - swipeLayout.close(); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java deleted file mode 100644 index 982a6863a4..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ /dev/null @@ -1,576 +0,0 @@ -package com.gh.gamecenter.personal; - -import android.content.SharedPreferences; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.drawable.Drawable; -import android.preference.PreferenceManager; -import android.support.v4.util.ArrayMap; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.RecyclerView.ViewHolder; -import android.text.TextUtils; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.halo.assistant.HaloApp; -import com.gh.common.constant.ItemViewType; -import com.gh.common.util.ApkActiveUtils; -import com.gh.common.util.BitmapUtils; -import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.DownloadItemUtils; -import com.gh.common.util.GameViewUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.PackageUtils; -import com.gh.common.util.PlatformUtils; -import com.gh.common.util.TrafficUtils; -import com.gh.common.view.SwipeLayout; -import com.gh.download.DownloadManager; -import com.gh.gamecenter.ChooseReceiverActivity; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameNormalSwipeViewHolder; -import com.gh.gamecenter.db.info.ConcernInfo; -import com.gh.gamecenter.entity.ApkEntity; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.entity.GameInfoEntity; -import com.gh.gamecenter.kuaichuan.FileInfo; -import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.GameManager; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; -import com.lightgame.adapter.BaseRecyclerAdapter; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import rx.Observable; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; - -import static com.gh.gamecenter.download.FileSendFragment.KC_REQUEST; - -/** - * Created by LGT on 2016/8/12. - * 已安装界面-数据适配器 - */ -class InstallFragmentAdapter extends BaseRecyclerAdapter { - - private InstallFragment fragment; - - private onSmoothLayoutListener smoothListener; - - private SharedPreferences sp; - - private ArrayList gameList; - private ArrayList sortedList; - - //下载用到的map - private ArrayMap> locationMap; - - private boolean isRemove; - - private boolean isSwipe; - - private boolean showUserNameHint; - - private boolean showKcHint; - - private int maxWidth; - - - InstallFragmentAdapter(InstallFragment fragment) { - super(fragment.getContext()); - this.fragment = fragment; - smoothListener = fragment; - - gameList = new ArrayList<>(); - sortedList = new ArrayList<>(); - - locationMap = new ArrayMap<>(); - - isRemove = false; - isSwipe = false; - - sp = PreferenceManager.getDefaultSharedPreferences(mContext); - showUserNameHint = sp.getBoolean("showUserNameHint", true); - showKcHint = sp.getBoolean("showKcHint", true); - - maxWidth = mContext.getResources().getDisplayMetrics().widthPixels; - - ConcernManager cManager = new ConcernManager(mContext); - List runnableGame = cManager.getInstalledGame(); - if (runnableGame.isEmpty()) { - fragment.loadEmpty(); - } else { - HaloApp.MAIN_EXECUTOR.execute(new Runnable() { - @Override - public void run() { - init(); - List ids = new ArrayList<>(); - for (GameInfoEntity info : sortedList) { - if (!ids.contains(info.getId())) { - ids.add(info.getId()); - } - } - initGameList(ids); - } - }); - } - } - - //初始化 - private void init() { - - ArrayList list = new ArrayList<>(); - ArrayList signatureList = new ArrayList<>(); // 是我们签名的游戏 - ArrayList unsignatureList = new ArrayList<>(); // 不是我们签名的游戏 - ArrayList noopenList = new ArrayList<>(); // 未打开过的游戏 - ArrayList oftenuseList = new ArrayList<>(); // 已经打开过的游戏 - - TrafficUtils trafficUtils = TrafficUtils.getInstance(mContext); - - ConcernManager cManager = new ConcernManager(mContext); - List runnableGame = cManager.getInstalledGame(); - for (ConcernInfo concernEntity : runnableGame) { - for (Map.Entry entry : concernEntity.getPackageNames().entrySet()) { - if (entry.getValue()) { - GameInfoEntity info = new GameInfoEntity(); - info.setId(concernEntity.getId()); - info.setPackageName(entry.getKey()); - info.setTraffic(trafficUtils.getTraffice(entry.getKey())); - info.setSignature(PackageUtils.isSignature(mContext, entry.getKey())); - info.setInstallTime(PackageUtils.getInstalledTime(mContext, entry.getKey())); - list.add(info); - } - } - } - - ArrayMap> map = new ArrayMap<>(); - ArrayList mList; - for (int i = 0, size = list.size(); i < size; i++) { - mList = map.get(list.get(i).getPackageName()); - if (mList == null) { - mList = new ArrayList<>(); - map.put(list.get(i).getPackageName(), mList); - } - mList.add(list.get(i)); - } - Comparator comparator = new Comparator() { - @Override - public int compare(GameInfoEntity lhs, GameInfoEntity rhs) { - return rhs.getId().compareTo(lhs.getId()); - } - }; - Object gh_id; - for (String key : map.keySet()) { - mList = map.get(key); - if (mList.size() > 1) { - Collections.sort(mList, comparator); - } - if (mList.get(0).isSignature()) { - gh_id = PackageUtils.getMetaData(mContext, key, "gh_id"); - for (GameInfoEntity info : mList) { - if (gh_id == null || info.getId().equals(gh_id)) { - signatureList.add(info); - break; - } - } - } else { - unsignatureList.add(mList.get(0)); - } - } - - for (GameInfoEntity info : signatureList) { - if (info.getTraffic() == 0) { - noopenList.add(info); - } else { - oftenuseList.add(info); - } - } - - comparator = new Comparator() { - @Override - public int compare(GameInfoEntity lhs, GameInfoEntity rhs) { - if (rhs.getInstallTime() > lhs.getInstallTime()) { - return 1; - } else if (rhs.getInstallTime() < lhs.getInstallTime()) { - return -1; - } else { - return 0; - } - } - }; - Collections.sort(noopenList, comparator); - - comparator = new Comparator() { - @Override - public int compare(GameInfoEntity lhs, GameInfoEntity rhs) { - if (rhs.getTraffic() > lhs.getTraffic()) { - return 1; - } else if (rhs.getTraffic() < lhs.getTraffic()) { - return -1; - } else { - return 0; - } - } - }; - Collections.sort(oftenuseList, comparator); - - Collections.sort(unsignatureList, comparator); - - sortedList.addAll(noopenList); - sortedList.addAll(oftenuseList); - sortedList.addAll(unsignatureList); - } - - //获取游戏简介 - private void initGameList(List ids) { - final List result = new ArrayList<>(); - - List> sequences = new ArrayList<>(); - for (String id : ids) { - sequences.add(RetrofitManager.getInstance(mContext).getApi().getGameDigest(id)); - } - Observable.merge(sequences) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onCompleted() { - processingData(result); - } - - @Override - public void onNext(GameEntity response) { - ApkActiveUtils.filterHideApk(response); - result.add(response); - } - }); - } - - private void processingData(List gameList) { - if (gameList.size() != 0) { - for (int i = 0, size = sortedList.size(); i < size; i++) { - String id = sortedList.get(i).getId(); - for (GameEntity entity : gameList) { - if (entity.getId().equals(id)) { - GameEntity newEntity = entity.clone(); - newEntity.setLibaoExists(entity.isLibaoExists()); - if (newEntity.getApk().size() > 1) { - for (ApkEntity apkEntity : newEntity.getApk()) { - if (sortedList.get(i).getPackageName().equals(apkEntity.getPackageName())) { - ArrayList list = new ArrayList<>(); - list.add(apkEntity); - newEntity.setApk(list); - break; - } - } - } - this.gameList.add(newEntity); - break; - } - } - } - 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()); - } - } - - if (this.gameList.size() != 0) { - ArrayMap> map = new ArrayMap<>(); - ArrayList list; - for (GameEntity gameEntity : this.gameList) { - list = map.get(gameEntity.getId()); - if (list == null) { - list = new ArrayList<>(); - map.put(gameEntity.getId(), list); - } - list.add(gameEntity); - } - list = new ArrayList<>(); - for (String key : map.keySet()) { - list.addAll(map.get(key)); - } - this.gameList = list; - isRemove = true; - notifyDataSetChanged(); - - initLocationMap(); - } - } - - private void initLocationMap() { - locationMap.clear(); - GameEntity gameEntity; - ArrayList list; - for (int i = 0; i < gameList.size(); i++) { - gameEntity = gameList.get(i); - if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) { - for (ApkEntity apkEntity : gameEntity.getApk()) { - list = locationMap.get(apkEntity.getPackageName()); - if (list == null) { - list = new ArrayList<>(); - locationMap.put(apkEntity.getPackageName(), list); - } - list.add(i); - } - } - } - } - - ArrayList getGameList() { - return gameList; - } - - public ArrayMap> getLocationMap() { - return locationMap; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - switch (viewType) { - case ItemViewType.GAME_NORMAL: - return new GameNormalSwipeViewHolder( - mLayoutInflater.inflate(R.layout.game_normal_item_swipe, parent, false)); - case ItemViewType.LOADING: - return new FooterViewHolder( - mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)); - case ItemViewType.KC_HINT: - return new KcHintViewHolder( - mLayoutInflater.inflate(R.layout.installfragment_footerview, parent, false)); - default: - break; - } - return null; - } - - @Override - public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { - if (holder instanceof GameNormalSwipeViewHolder) { - initGameNormal((GameNormalSwipeViewHolder) holder, gameList.get(position), position); - } else if (holder instanceof KcHintViewHolder) { - ((KcHintViewHolder) holder).mTextView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - sp.edit().putBoolean("showKcHint", false).apply(); - smoothListener.onSmooth(); - ((KcHintViewHolder) holder).mTextView.postDelayed(new Runnable() { - @Override - public void run() { - showKcHint = false; - notifyDataSetChanged(); - } - }, 500); - } - }); - } - } - - @Override - public int getItemViewType(int position) { - if (gameList.size() != 0 && position >= 0 && position < gameList.size()) { - return ItemViewType.GAME_NORMAL; - } - - if (isRemove && !showUserNameHint && showKcHint) { - return ItemViewType.KC_HINT; - } - - return ItemViewType.LOADING; - } - - @Override - public int getItemCount() { - if (gameList.isEmpty() && !isRemove) { - return 1; - } - if (isRemove && !showUserNameHint && showKcHint) { - return gameList.size() + 1; - } - if (isRemove) { - return gameList.size(); - } - return gameList.size() + 1; - } - - private void initGameNormal(final GameNormalSwipeViewHolder holder, final GameEntity gameEntity, final int i) { - - holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); - - ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); - - if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty() - || gameEntity.getTag() == null || gameEntity.getTag().isEmpty()) { - if (gameEntity.getApk() != null && gameEntity.getApk().size() > 0 - && !TextUtils.isEmpty(gameEntity.getApk().get(0).getVersion())) { - holder.gameDes.setText(String.format("V%s", gameEntity.getApk().get(0).getVersion())); - } else { - holder.gameDes.setText(gameEntity.getBrief()); - } - holder.gameName.setText(gameEntity.getName()); - } else { - holder.gameName.setText(String.format("%s - %s", gameEntity.getName(), - PlatformUtils.getInstance(mContext).getPlatformName(gameEntity.getApk().get(0).getPlatform()))); - holder.gameDes.setText(String.format("V%s", gameEntity.getApk().get(0).getVersion())); - } - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), ""); - - holder.cardView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!isSwipe) { - Map kv = new HashMap<>(); - kv.put("名字", gameEntity.getName()); - kv.put("位置", String.valueOf(holder.getPosition() + 1)); - DataUtils.onEvent(mContext, "点击", "我的光环-已安装", kv); - - DataCollectionUtils.uploadClick(mContext, "列表", "我的光环-已安装", gameEntity.getName()); - - GameDetailActivity.startGameDetailActivity(mContext, gameEntity.getId(), "(我的光环-已安装)"); - } - } - }); - - - int paddRight = 0; - String serverType = gameEntity.getServerType(); - if (TextUtils.isEmpty(serverType)) { - holder.gameServerType.setVisibility(View.GONE); - } else { - holder.gameServerType.setVisibility(View.VISIBLE); - holder.gameServerType.setText(serverType); - if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) { - holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag); - if ("删档内测".equals(serverType)) { - paddRight = DisplayUtils.dip2px(mContext, 50); - } else { - paddRight = DisplayUtils.dip2px(mContext, 60); - } - } else { - holder.gameServerType.setBackgroundResource(R.drawable.textview_orange_up); - paddRight = DisplayUtils.dip2px(mContext, 30); - } - } - holder.gameName.setPadding(0, 0, paddRight, 0); - - DownloadItemUtils.setOnClickListener(mContext, holder.gameDownloadBtn, gameEntity, i, - this, "(我的光环-已安装)", "我的光环-已安装" + ":" + gameEntity.getName()); - - DownloadItemUtils.updateItem(mContext, gameEntity, holder, false); - - holder.swipeLayout.close(); - holder.swipeShareText.setPadding((maxWidth / 12), 0, 0, 0); - holder.swipeLayout.addSwipeListener(new SwipeLayout.SwipeListener() { - @Override - public void onStartOpen(SwipeLayout layout) { - isSwipe = true; - - } - - @Override - public void onOpen(SwipeLayout layout) { - skipKc(i); - holder.swipeLayout.close(); -// holder.swipeLayout.postDelayed(new Runnable() { -// @Override -// public void run() { -// notifyItemRangeChanged(0 ,getItemCount()); -// } -// }, 500); - } - - @Override - public void onStartClose(SwipeLayout layout) { - } - - @Override - public void onClose(SwipeLayout layout) { - isSwipe = false; -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); - holder.swipeText.setText("右划发给好友\n免流量安装"); - } - - @Override - public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) { - if (leftOffset > maxWidth / 2.7 && leftOffset < maxWidth / 2.5) { -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 30), 0); - holder.swipeText.setVisibility(View.GONE); - holder.swipeShareText.setVisibility(View.VISIBLE); - } else if (leftOffset > maxWidth / 2.5) { - holder.swipeText.setVisibility(View.GONE); - holder.swipeShareText.setVisibility(View.VISIBLE); - holder.swipeShareText.setText("放手发给好友\n免流量安装"); - } else if (leftOffset < maxWidth / 2.7) { -// holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); - holder.swipeText.setVisibility(View.VISIBLE); - holder.swipeShareText.setVisibility(View.GONE); - holder.swipeShareText.setText("右划发给好友\n免流量安装"); - } - } - - @Override - public void onHandRelease(SwipeLayout layout, float xvel, float yvel) { - } - }); - } - - //跳转到快传 - 搜索接收者页面 - public void skipKc(int i) { - GameEntity gameEntity = gameList.get(i); - String packageName = gameEntity.getApk().get(0).getPackageName(); - PackageManager pm = mContext.getPackageManager(); - FileInfo fileInfo = new FileInfo(); - List installedPackages = pm.getInstalledPackages(0); - for (PackageInfo installedPackage : installedPackages) { - if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0 - && installedPackage.packageName.equals(packageName)) { - fileInfo.setFilePath(installedPackage.applicationInfo.sourceDir); - File file = new File(installedPackage.applicationInfo.sourceDir); - fileInfo.setSize(file.length()); - Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - fileInfo.setBitmap(BitmapUtils.drawableToBitmap(drawable)); - fileInfo.setFileTag(String.valueOf(System.currentTimeMillis())); - } - } - if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty() - || gameEntity.getTag() == null || gameEntity.getTag().isEmpty()) { - fileInfo.setName(gameEntity.getName()); - } else { - fileInfo.setName(String.format("%s - %s", gameEntity.getName(), - PlatformUtils.getInstance(mContext).getPlatformName(gameEntity.getApk().get(0).getPlatform()))); - } - fileInfo.setPackageName(packageName); - List fileInfos = new ArrayList<>(); - fileInfos.add(fileInfo); - - HaloApp.put(HaloApp.KEY_FILE_INFO, fileInfos); - fragment.startActivityForResult(ChooseReceiverActivity.getIntent(mContext, true), KC_REQUEST); - - } - - public interface onSmoothLayoutListener { - void onSmooth(); - } - - public class KcHintViewHolder extends RecyclerView.ViewHolder { - TextView mTextView; - - public KcHintViewHolder(View itemView) { - super(itemView); - mTextView = (TextView) itemView.findViewById(R.id.kuaichuan_hint); - } - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java index 870f1b83c4..eeec2f5333 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java @@ -1,12 +1,11 @@ package com.gh.gamecenter.suggest; -import android.content.Intent; -import android.provider.MediaStore; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.View; import android.view.ViewGroup; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.lightgame.adapter.BaseRecyclerAdapter; @@ -15,25 +14,24 @@ import com.lightgame.utils.Utils; import java.util.ArrayList; import java.util.List; -import static com.gh.gamecenter.SuggestionActivity.MEDIA_STORE_REQUEST; - /** * Created by khy on 2017/3/31. */ public class SuggestPicAdapter extends BaseRecyclerAdapter { - private SuggestionActivity activity; + private OnListClickListener mListListener; private List picList; public SuggestPicAdapter(SuggestionActivity activity) { super(activity); - this.activity = activity; + this.mListListener = activity; picList = new ArrayList<>(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new SuggestPicViewHolder(mLayoutInflater.inflate(R.layout.suggest_pic_item, parent, false)); + View view = mLayoutInflater.inflate(R.layout.suggest_pic_item, parent, false); + return new SuggestPicViewHolder(view, picList, mListListener); } @Override @@ -55,17 +53,6 @@ public class SuggestPicAdapter extends BaseRecyclerAdapter { notifyDataSetChanged(); } }); - - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (holder.getAdapterPosition() == getItemCount() - 1 && picList.size() < 5) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - activity.startActivityForResult(intent, MEDIA_STORE_REQUEST); - } - } - }); - } } diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicViewHolder.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicViewHolder.java index 0a2666036f..1f48fb4ef0 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicViewHolder.java @@ -5,6 +5,7 @@ import android.widget.ImageView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; import butterknife.BindView; @@ -22,4 +23,9 @@ public class SuggestPicViewHolder extends BaseRecyclerViewHolder { public SuggestPicViewHolder(View itemView) { super(itemView); } + + public SuggestPicViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + itemView.setOnClickListener(this); + } } diff --git a/app/src/main/res/layout/gamedetail_item_libao.xml b/app/src/main/res/layout/gamedetail_item_libao.xml index 6bd28cba02..bf4a56cc61 100644 --- a/app/src/main/res/layout/gamedetail_item_libao.xml +++ b/app/src/main/res/layout/gamedetail_item_libao.xml @@ -1,5 +1,6 @@