|
|
@@ -0,0 +1,267 @@
|
|
|
+package com.sheep.gamegroup.module.home.fragment;
|
|
|
+
|
|
|
+import android.app.Activity;
|
|
|
+import android.support.v4.view.ViewPager;
|
|
|
+import android.support.v7.widget.LinearLayoutManager;
|
|
|
+import android.support.v7.widget.RecyclerView;
|
|
|
+import android.text.TextUtils;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+
|
|
|
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
|
|
|
+import com.sheep.gamegroup.absBase.ILoadMore;
|
|
|
+import com.sheep.gamegroup.absBase.IRefresh;
|
|
|
+import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
+import com.sheep.gamegroup.model.entity.Release_task;
|
|
|
+import com.sheep.gamegroup.model.entity.RequestParamEty;
|
|
|
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
|
|
|
+import com.sheep.gamegroup.model.util.SheepSubscriber;
|
|
|
+import com.sheep.gamegroup.module.home.adapter.AdpPromoteGoods;
|
|
|
+import com.sheep.gamegroup.module.yf_shop.model.GetPromoteGoodsUrl;
|
|
|
+import com.sheep.gamegroup.module.yf_shop.model.PromoteGoods;
|
|
|
+import com.sheep.gamegroup.util.CommonUtil;
|
|
|
+import com.sheep.gamegroup.util.DataUtil;
|
|
|
+import com.sheep.gamegroup.util.ListUtil;
|
|
|
+import com.sheep.gamegroup.util.ViewUtil;
|
|
|
+import com.sheep.jiuyan.samllsheep.R;
|
|
|
+import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
|
|
|
+import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
+
|
|
|
+import org.afinal.simplecache.ApiKey;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import butterknife.BindView;
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.schedulers.Schedulers;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by realicing on 2019/3/26.
|
|
|
+ * realicing@sina.com
|
|
|
+ * 小绵羊3.5.3新增 -- 主页 tab 第三个 限时抢购
|
|
|
+ */
|
|
|
+public class FgtPromoteGoodsList extends BaseFragment implements ILoadMore, IRefresh {
|
|
|
+ @BindView(R.id.view_list)
|
|
|
+ RecyclerView view_list;
|
|
|
+ @BindView(R.id.empty_view)
|
|
|
+ View empty_view;
|
|
|
+
|
|
|
+ private Activity activity;
|
|
|
+ private List<PromoteGoods> list = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ private void notifyDataSetChanged() {
|
|
|
+ if(empty_view == null || view_list == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ViewUtil.notifyDataSetChanged(view_list);
|
|
|
+ updateEmptyView();
|
|
|
+ refreshOrLoadMoreComplete();
|
|
|
+ resetViewPagerHeight();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static FgtPromoteGoodsList newInstance() {
|
|
|
+ return new FgtPromoteGoodsList();
|
|
|
+ }
|
|
|
+
|
|
|
+ public FgtPromoteGoodsList() {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getLayoutId() {
|
|
|
+ return R.layout.net_empty_rv;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onViewCreated() {
|
|
|
+ activity = getActivity();
|
|
|
+ initView();
|
|
|
+ initListener();
|
|
|
+ refreshData();
|
|
|
+ }
|
|
|
+
|
|
|
+ private AdpPromoteGoods adapter;
|
|
|
+ public void initView() {
|
|
|
+ if (activity == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ view_list.setLayoutManager(new LinearLayoutManager(activity));
|
|
|
+ view_list.setHasFixedSize(true);
|
|
|
+ view_list.setNestedScrollingEnabled(false);
|
|
|
+ adapter = new AdpPromoteGoods(R.layout.item_hp_promote_goods, list);
|
|
|
+ adapter.bindToRecyclerView(view_list);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void initListener() {
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isFirstCache = false;//是否首先尝试缓存
|
|
|
+
|
|
|
+ //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
|
|
|
+ public void initData() {
|
|
|
+ isFirstCache = true;
|
|
|
+ mInitData();
|
|
|
+ }
|
|
|
+
|
|
|
+ //强制刷新数据
|
|
|
+ public void refreshData() {
|
|
|
+ isFirstCache = false;
|
|
|
+ noMore = false;
|
|
|
+ page = 1;
|
|
|
+ list.clear();
|
|
|
+ mInitData();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void loadMoreData() {
|
|
|
+ if (ListUtil.size(list) >= per_page * page) {
|
|
|
+ page += 1;
|
|
|
+ //先加载缓存
|
|
|
+ getReleaseFromACache();
|
|
|
+ //再加载网络数据
|
|
|
+ getReleaseFromNetWork();
|
|
|
+ }
|
|
|
+ notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ private int page = 1;
|
|
|
+ private int per_page = DataUtil.PER_PAGE;
|
|
|
+
|
|
|
+ public void mInitData() {
|
|
|
+ CommonUtil.getInstance().resetEmptyView(empty_view);
|
|
|
+ //先加载缓存
|
|
|
+ getReleaseFromACache();
|
|
|
+ //再加载网络数据
|
|
|
+ getReleaseFromNetWork();
|
|
|
+ }
|
|
|
+
|
|
|
+ private int onResumeCount = 0;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onResume() {
|
|
|
+ super.onResume();
|
|
|
+ if (onResumeCount > 0) {//直接全部刷新
|
|
|
+ refreshData();
|
|
|
+ }
|
|
|
+ onResumeCount++;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //从ACache获取发布的任务列表
|
|
|
+ private void getReleaseFromACache() {
|
|
|
+ try {
|
|
|
+ GetPromoteGoodsUrl getPromoteGoodsUrl = DataUtil.getInstance().getCacheResult(ApiKey.pageKeyUrl(ApiKey.PROMOTE_GOODS, page, per_page), GetPromoteGoodsUrl.class);
|
|
|
+ if(getPromoteGoodsUrl != null){
|
|
|
+ adapter.setBaseUrl(getPromoteGoodsUrl.getUrl());
|
|
|
+ ListUtil.addAllItem(list, getPromoteGoodsUrl.getList());
|
|
|
+ }
|
|
|
+ notifyDataSetChanged();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //从网络获取发布的任务列表
|
|
|
+ private void getReleaseFromNetWork() {
|
|
|
+ SheepApp.getInstance().getNetComponent().getApiService().getYfShopPromoteGoods(page, per_page)
|
|
|
+ .subscribeOn(Schedulers.io())
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
|
|
|
+ @Override
|
|
|
+ public void onNext(BaseMessage baseMessage) {
|
|
|
+ boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.PROMOTE_GOODS);
|
|
|
+ if (isNewData) {
|
|
|
+ GetPromoteGoodsUrl getPromoteGoodsUrl = baseMessage.getData(GetPromoteGoodsUrl.class);
|
|
|
+ if(getPromoteGoodsUrl != null){
|
|
|
+ adapter.setBaseUrl(getPromoteGoodsUrl.getUrl());
|
|
|
+ ListUtil.addAllItem(list, getPromoteGoodsUrl.getList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ notifyDataSetChanged();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(BaseMessage baseMessage) {
|
|
|
+ notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getDataCount() {
|
|
|
+ return list.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean noMore = false;
|
|
|
+ public boolean isNoMore() {
|
|
|
+ return noMore;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //加载完成时更新header或footer
|
|
|
+ protected void refreshOrLoadMoreComplete() {
|
|
|
+ if(smartRefreshLayout != null && getUserVisibleHint()) {
|
|
|
+ if (page == 1) {
|
|
|
+ smartRefreshLayout.finishRefresh();
|
|
|
+ } else {
|
|
|
+ smartRefreshLayout.finishLoadMore();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //重新设置ViewPager的高度
|
|
|
+ protected void resetViewPagerHeight() {
|
|
|
+ if(viewPager != null && getUserVisibleHint()){
|
|
|
+ int count = getDataCount();
|
|
|
+ ViewGroup.LayoutParams params = viewPager.getLayoutParams();
|
|
|
+ params.height = count == 0 ? G.HEIGHT / 2 : count * getItemHeight();
|
|
|
+// LogUtil.println("resetViewPagerHeight", count, about_to_begin, show_type, getItemHeight(), params.height);
|
|
|
+ viewPager.setLayoutParams(params);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setUserVisibleHint(boolean isVisibleToUser) {
|
|
|
+ super.setUserVisibleHint(isVisibleToUser);
|
|
|
+ resetViewPagerHeight();
|
|
|
+ if(smartRefreshLayout != null && getUserVisibleHint()) {
|
|
|
+ smartRefreshLayout.setNoMoreData(noMore);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ protected int getItemHeight(){
|
|
|
+ return G.getRealPix(140);
|
|
|
+ }
|
|
|
+
|
|
|
+ //是否显示无数据占位图
|
|
|
+ protected void updateEmptyView(){
|
|
|
+ boolean showEmpty = list.isEmpty();
|
|
|
+ CommonUtil.getInstance().updateEmptyView(empty_view, showEmpty);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onDestroyView() {
|
|
|
+ super.onDestroyView();
|
|
|
+ view_list = null;
|
|
|
+ viewPager = null;
|
|
|
+ smartRefreshLayout = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected ViewPager viewPager;
|
|
|
+ protected SmartRefreshLayout smartRefreshLayout;
|
|
|
+
|
|
|
+ public ViewPager getViewPager() {
|
|
|
+ return viewPager;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setViewPager(ViewPager viewPager) {
|
|
|
+ this.viewPager = viewPager;
|
|
|
+ }
|
|
|
+
|
|
|
+ public SmartRefreshLayout getSmartRefreshLayout() {
|
|
|
+ return smartRefreshLayout;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSmartRefreshLayout(SmartRefreshLayout smartRefreshLayout) {
|
|
|
+ this.smartRefreshLayout = smartRefreshLayout;
|
|
|
+ }
|
|
|
+}
|