Просмотр исходного кода

修复小绵羊主页任务列表刷新卡顿问题

zengjiebin лет назад: 7
Родитель
Сommit
1ea49591fa

+ 2 - 0
app/src/main/java/com/sheep/gamegroup/di/components/FgtTryMakeMoneyComponent.java

@@ -2,6 +2,7 @@ package com.sheep.gamegroup.di.components;
 
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
 import com.sheep.gamegroup.di.scopes.UserScope;
+import com.sheep.gamegroup.view.fragment.FgtHomeTaskReleaseList;
 import com.sheep.gamegroup.view.fragment.FgtTryMakeMoney;
 
 import dagger.Component;
@@ -14,4 +15,5 @@ import dagger.Component;
 @Component(modules = TryMakeMoneyModule.class, dependencies = NetComponent.class)
 public interface FgtTryMakeMoneyComponent {
     void inject(FgtTryMakeMoney fgtTryMakeMoney);
+    void inject(FgtHomeTaskReleaseList fgtTryMakeMoney);
 }

+ 0 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment3.java

@@ -101,7 +101,6 @@ public abstract class BaseListFragment3<T> extends BaseFragment {
                 smartRefreshLayout.finishLoadMore();
             }
         }
-
     }
     protected List<T> list = ListUtil.emptyList();
     protected List<T> lastCacheList = ListUtil.emptyList();

+ 555 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtHomeTaskReleaseList.java

@@ -0,0 +1,555 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.app.Activity;
+import android.os.Bundle;
+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.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.jcodecraeer.xrecyclerview.XRecyclerView;
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.sheep.gamegroup.di.components.DaggerFgtTryMakeMoneyComponent;
+import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.event.EventTypes;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.RecyleObj;
+import com.sheep.gamegroup.model.entity.RecyleType;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.presenter.TryMakeMoneyContract;
+import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.activity.GamemakeMoneyAct;
+import com.sheep.gamegroup.view.activity.TryMakeMoneyact;
+import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
+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.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import butterknife.BindView;
+import rx.functions.Action1;
+
+/**
+ * Created by realicing on 2018/10/10.
+ * realicing@sina.com
+ * 主页发布的任务列表或者即将开始的任务列表
+ */
+public class FgtHomeTaskReleaseList extends BaseFragment implements TryMakeMoneyContract.View {
+    @BindView(R.id.title)
+    protected View title;
+    @BindView(R.id.view_list)
+    RecyclerView view_list;
+    @BindView(R.id.empty_view)
+    View empty_view;
+
+    @Inject
+    TryMakeMoneyPresenter presenter;
+    private Activity activity;
+    private TryMakeMoneyAdp tryMakeMoneyAdp;
+    private List<TaskAcceptedEty> acceptedEtyList = new ArrayList<>();
+    private List<TaskReleaseEty> releaseEtyLists = new ArrayList<>();
+    private List<TaskReleaseEty> releaseEtyListsBegin = new ArrayList<>();
+    private List<TaskReleaseEty> lastCacheReleaseEtyLists = new ArrayList<>();
+    private List<TaskReleaseEty> lastCacheReleaseEtyListsBegin = new ArrayList<>();
+    private int about_to_begin = 0;
+    private String show_type;//有值代表来自主页
+    private boolean isFromHome = false;//来自主页
+    private int is_succession;//0:一般任务 1:连续任务
+
+
+    private static final int LIST_COUNT = 3;//tryMakeMoneyAdp 总共有3条数据
+    private static final RecyleObj NULL = RecyleObj.make(RecyleType.NONE, null);//空数据
+    private Comparator<TaskReleaseEty> comparator = new Comparator<TaskReleaseEty>() {
+        @Override
+        public int compare(TaskReleaseEty item1, TaskReleaseEty item2) {
+            return item2.getLastNum1Or0() - item1.getLastNum1Or0();
+        }
+    };
+    private void notifyDataSetChanged() {
+        if(empty_view == null || view_list == null){
+            return;
+        }
+        tryMakeMoneyAdp.clear();
+        if (!ListUtil.isEmpty(acceptedEtyList))
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, acceptedEtyList));
+        if (!ListUtil.isEmpty(releaseEtyLists)) {
+            Collections.sort(releaseEtyLists, comparator);
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists));
+        }
+        if (!ListUtil.isEmpty(releaseEtyListsBegin))
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.BEGIN_TASK, releaseEtyListsBegin));
+        tryMakeMoneyAdp.refreshAdapter();
+        updateEmptyView();
+        refreshOrLoadMoreComplete();
+        resetViewPagerHeight();
+    }
+
+
+    public static FgtHomeTaskReleaseList newInstance(int type) {
+        FgtHomeTaskReleaseList fgtTryMakeMoney = new FgtHomeTaskReleaseList();
+        Bundle bundle = new Bundle();
+        bundle.putInt("type", type);
+        fgtTryMakeMoney.setArguments(bundle);
+        return fgtTryMakeMoney;
+    }
+
+    public static FgtHomeTaskReleaseList newInstance(int type, String show_type) {
+        FgtHomeTaskReleaseList fgtTryMakeMoney = new FgtHomeTaskReleaseList();
+        Bundle bundle = new Bundle();
+        bundle.putInt("type", type);
+        bundle.putString("show_type", show_type);
+        fgtTryMakeMoney.setArguments(bundle);
+        return fgtTryMakeMoney;
+    }
+
+    public FgtHomeTaskReleaseList() {
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            about_to_begin = bundle.getInt("type", 0);
+            show_type = bundle.getString("show_type", "");
+            isFromHome = !TextUtils.isEmpty(show_type);
+            switch (show_type){
+                case "is_hot":
+                    isGetRelease = true;
+                    break;
+                case "about_to_begin":
+                    isGetReleaseBegin = true;
+                    break;
+                default:
+                    isGetRelease = true;
+                    isGetReleaseBegin = true;
+                    break;
+            }
+        }
+        return rootView;
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.net_empty_rv;
+    }
+
+    @Override
+    public void onViewCreated() {
+        activity = getActivity();
+        initView();
+        initListener();
+        refreshData();
+    }
+
+    private String task_type = "-1";
+    private boolean isGameTask = false;
+
+    public void initView() {
+        title.setVisibility(View.GONE);
+        if (activity == null) {
+            return;
+        }
+        if (activity instanceof TryMakeMoneyact) {//试玩任务、连续任务
+            is_succession = ((TryMakeMoneyact) activity).getIsSuccession();
+            task_type = "-1";
+            isGameTask = false;
+        } else if (activity instanceof GamemakeMoneyAct) {//游戏任务
+            is_succession = ((GamemakeMoneyAct) activity).getIsSuccession();
+            task_type = "1002,1003,1004";
+            isGameTask = true;
+        }
+        DaggerFgtTryMakeMoneyComponent.builder()
+                .netComponent(SheepApp.getInstance().getNetComponent())
+                .tryMakeMoneyModule(new TryMakeMoneyModule(FgtHomeTaskReleaseList.this))
+                .build()
+                .inject(FgtHomeTaskReleaseList.this);
+        view_list.setLayoutManager(new LinearLayoutManager(activity));
+        view_list.setHasFixedSize(true);
+        view_list.setNestedScrollingEnabled(false);
+        tryMakeMoneyAdp = new TryMakeMoneyAdp(activity);
+        tryMakeMoneyAdp.addType(about_to_begin);
+        tryMakeMoneyAdp.addShowType(show_type);
+        tryMakeMoneyAdp.setIs_succession(getIs_succession());
+        tryMakeMoneyAdp.addPresenter(presenter);
+        for (int i = 0; i < LIST_COUNT; i++) {
+            tryMakeMoneyAdp.add(NULL);
+        }
+        view_list.setAdapter(tryMakeMoneyAdp);
+
+    }
+
+    public void initListener() {
+    }
+
+    private boolean isFirstCache = false;//是否首先尝试缓存
+
+    //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
+    public void initData() {
+        isFirstCache = true;
+        mInitData();
+    }
+
+    //强制刷新数据
+    public void refreshData() {
+        isFirstCache = false;
+        noMore = false;
+        releasePage = 1;
+        releaseBeginPage = 1;
+        acceptedEtyList.clear();
+        releaseEtyLists.clear();
+        releaseEtyListsBegin.clear();
+        mInitData();
+    }
+
+
+    public void loadMoreData() {
+        boolean noMoreRelease = true;
+        boolean noMoreReleaseBegin = true;
+
+        if(isGetRelease) {
+            if (ListUtil.size(releaseEtyLists) >= per_page * releasePage) {
+                releasePage += 1;
+                noMoreRelease = false;
+                //先加载缓存
+                getReleaseFromACache(0);
+                //再加载网络数据
+                getReleaseFromNetWork(0);
+            }
+        }
+        if(isGetReleaseBegin) {
+            if (ListUtil.size(releaseEtyListsBegin) >= per_page * releaseBeginPage) {
+                releaseBeginPage += 1;
+                noMoreReleaseBegin = false;
+                //先加载缓存
+                getReleaseFromACache(1);
+                //再加载网络数据
+                getReleaseFromNetWork(1);
+            }
+        }
+        if(noMoreRelease && noMoreReleaseBegin){
+            noMore = true;
+        }
+        notifyDataSetChanged();
+    }
+    private int releasePage = 1;
+    private int releaseBeginPage = 1;
+    private int per_page = DataUtil.PER_PAGE;
+    //是否获取发布的任务列表
+    private boolean isGetRelease = false;
+    //是否获取即将开始的列表
+    private boolean isGetReleaseBegin = false;
+
+    public void mInitData() {
+        if (!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+            notifyDataSetChanged();
+        }
+        CommonUtil.getInstance().resetEmptyView(empty_view);
+        if (isFirstCache) {
+            //获取缓存的正在进行的任务
+            List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
+            if (isGameTask) {
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
+            } else {
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(getIs_succession(), 0), TaskAcceptedEty.class);
+            }
+            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
+                acceptedEtyList.clear();
+            } else {
+                acceptedEtyList = cacheTaskAcceptedEtyList;
+                if (!ListUtil.isEmpty(acceptedEtyList)) {//清除时间数据,缓存数据不显示时间
+                    for (TaskAcceptedEty taskAcceptedEty : acceptedEtyList) {
+                        taskAcceptedEty.setEnd_time(0);
+                    }
+                }
+            }
+        }
+        initAcceptedTaskList();
+        if(isGetRelease) {
+            //先加载缓存
+            getReleaseFromACache(0);
+            //再加载网络数据
+            getReleaseFromNetWork(0);
+        }
+        if(isGetReleaseBegin) {
+            //先加载缓存
+            getReleaseFromACache(1);
+            //再加载网络数据
+            getReleaseFromNetWork(1);
+        }
+    }
+
+    /**
+     * 获取正在运行的任务
+     */
+    private void initAcceptedTaskList() {
+        if (isGameTask) {
+            presenter.runGameTask();
+        } else if (TextUtils.isEmpty(show_type)) {
+            presenter.returnTask(is_succession, 0);
+        } else {//主页不加载数据
+//            presenter.returnTask(3, 0);
+        }
+    }
+
+    @Override
+    public void updateData2View(Object o) {
+
+    }
+
+    @Override
+    public void failData2View(Object o) {
+
+    }
+
+    @Override
+    public void acceptedTaskUpdataView(Object o) {
+
+    }
+
+    @Override
+    public void failAcceptedTask2View(Object o) {
+        try {
+            BaseMessage baseMessage = (BaseMessage) o;
+            switch (baseMessage.getCode()) {
+                case 300://未查询到数据
+                    G.showToast(" 未查询到数据!");
+                    break;
+                default:
+                    G.showToast(" 网络错误!");
+                    break;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            G.showToast(" 网络错误!");
+        }
+    }
+
+    @Override
+    public void giveUpTaskSuccesView(Object object) {
+        G.showToast("取消任务成功");
+        CommonUtil.getInstance().updateAutoCheck(null);
+        refreshData();
+    }
+
+    @Override
+    public void giveUpTaskFailView(Object o) {
+        try {
+            BaseMessage baseMessage = (BaseMessage) o;
+            G.showToast(baseMessage.getMsg() + "");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public int getIs_succession() {
+        return isFromHome ? 3 : is_succession;
+    }
+
+    @Override
+    public void returnTaskTaskUpdateView(Object object) {
+        boolean isNewData = DataUtil.getInstance().isNewData(isGameTask ? ApiKey.run_game_task : ApiKey.new_run_task(getIs_succession(), 0));
+        if (isNewData) {
+            if (object instanceof BaseMessage) {
+                List<TaskAcceptedEty> taskAcceptedEty = ((BaseMessage) object).getDataList(TaskAcceptedEty.class);
+                if (ListUtil.isEmpty(taskAcceptedEty)) {
+                    acceptedEtyList.clear();
+                } else {
+                    acceptedEtyList.clear();
+                    acceptedEtyList.addAll(taskAcceptedEty);
+                }
+            }
+        }
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public void failReturnTask2View(Object object) {
+        if (!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+        }
+        notifyDataSetChanged();
+    }
+
+    /**
+     * 获取已经发布任务
+     *
+     * @param baseMessage
+     */
+    @Override
+    public void releaseTaskTaskUpdateView(BaseMessage baseMessage, int about_to_begin) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, getIs_succession()));
+        if (isNewData) {
+            List<TaskReleaseEty> releaseEtyList = baseMessage.getDataList(TaskReleaseEty.class);
+            switch (about_to_begin) {
+                case 0:
+                    ListUtil.removeAll(releaseEtyLists, lastCacheReleaseEtyLists);
+                    ListUtil.addAllItem(releaseEtyLists, releaseEtyList);
+                    break;
+                case 1:
+                    ListUtil.removeAll(releaseEtyListsBegin, lastCacheReleaseEtyListsBegin);
+                    ListUtil.addAllItem(releaseEtyListsBegin, releaseEtyList);
+                    break;
+            }
+        }
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public void failReleaseTask2View(BaseMessage baseMessage, int about_to_begin) {
+        notifyDataSetChanged();
+    }
+
+    private int onResumeCount = 0;
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (!isFromHome && onResumeCount > 0 && presenter != null) {//直接全部刷新
+            refreshData();
+        }
+        onResumeCount++;
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (tryMakeMoneyAdp != null) {
+            tryMakeMoneyAdp.cancelAllTimers();
+        }
+    }
+
+    //从ACache获取发布的任务列表
+    private void getReleaseFromACache(int about_to_begin) {
+        try {
+            List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, getIs_succession()), TaskReleaseEty.class);
+            switch (about_to_begin) {
+                case 0:
+                    lastCacheReleaseEtyLists = cacheTaskReleaseEtyList;
+                    ListUtil.addAllItem(releaseEtyLists, cacheTaskReleaseEtyList);
+                    break;
+                case 1:
+                    lastCacheReleaseEtyListsBegin = cacheTaskReleaseEtyList;
+                    ListUtil.addAllItem(releaseEtyListsBegin, cacheTaskReleaseEtyList);
+                    break;
+            }
+            notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    //从网络获取发布的任务列表
+    private void getReleaseFromNetWork(int about_to_begin) {
+        RequestParamEty paramEty = new RequestParamEty();
+        paramEty.setHashMap(
+                CommonUtil.getInstance()
+                        .setHashMap(about_to_begin == 0 ? releasePage : releaseBeginPage,
+                                per_page,
+                                SheepApp.getInstance().getConnectAddress().getPlatForm(),
+                                TextUtils.isEmpty(show_type) ? 0 : show_type.equals("is_hot") ? 1 : 0,
+                                0,
+                                about_to_begin,
+                                task_type,
+                                getIs_succession()));
+        presenter.releaseTask(paramEty);
+    }
+
+    public int getDataCount() {
+        return acceptedEtyList.size() + releaseEtyLists.size() + releaseEtyListsBegin.size();
+    }
+
+    private boolean noMore = false;
+    public boolean isNoMore() {
+        return noMore;
+    }
+
+
+    //加载完成时更新header或footer
+    protected void refreshOrLoadMoreComplete() {
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            if (releasePage == 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()) + getResources().getDimensionPixelSize(R.dimen.content_padding);
+//            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 SheepApp.getInstance().getResources().getDimensionPixelSize(R.dimen.content_padding_96);
+    }
+
+    //是否显示无数据占位图
+    protected void updateEmptyView(){
+        boolean showEmpty = acceptedEtyList.isEmpty() && releaseEtyLists.isEmpty() && releaseEtyListsBegin.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;
+    }
+}

+ 9 - 2
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGame.java

@@ -323,7 +323,16 @@ public class FgtPlayGame extends BaseFragment {
                         notifyDataSetChanged();
                     }
                 });
+        if (!isFirst) {
+            for (int i = 0; i < mAdapter.getCount(); i++) {
+                FgtPlayGameSon item = (FgtPlayGameSon) mAdapter.getItem(i);
+                item.refreshData();
+            }
+        }
+        isFirst = false;
     }
+
+    private boolean isFirst = true;
     private void notifyDataSetChanged() {
         refresh.finishRefresh();
         refresh.finishLoadMore();
@@ -342,13 +351,11 @@ public class FgtPlayGame extends BaseFragment {
         if (!ListUtil.isEmpty(newList)) {
             list.clear();
             ListUtil.addAll(list, newList);
-            int i = 0;
             for(FindTag findTag:list){
                 FgtPlayGameSon item = FgtPlayGameSon.newInstance(findTag.getId());
                 item.setViewPager(pager);
                 item.setSmartRefreshLayout(refresh);
                 mAdapter.add(item, findTag.getName());
-                i++;
             }
             pager.setAdapter(mAdapter);
             indicator.setupWithViewPager(pager);

+ 39 - 75
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -10,14 +10,13 @@ import android.content.DialogInterface;
 import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
 import android.os.Build;
-import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
+import android.support.annotation.NonNull;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.NestedScrollView;
-import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -45,6 +44,9 @@ import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
 import com.google.gson.Gson;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
 import com.sheep.gamegroup.di.components.DaggerSmallSheepComponent;
 import com.sheep.gamegroup.di.modules.SmallSheepModule;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
@@ -62,7 +64,6 @@ import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
-import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.SmallSheepContract;
 import com.sheep.gamegroup.presenter.SmallSheepPresenter;
@@ -77,6 +78,7 @@ import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.MyListview;
+import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
@@ -157,7 +159,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
     @BindView(R.id.newbie_task)
     View newbie_task;
     @BindView(R.id.refresh)
-    SwipeRefreshLayout refresh;
+    SmartRefreshLayout refresh;
     @BindView(R.id.recyclerview)
     RecyclerView recyclerview;
     @BindView(R.id.recharge)
@@ -190,8 +192,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
     View recyclerview_line;
     @BindView(R.id.full_home_list_rv)
     RecyclerView full_home_list_rv;
-    @BindView(R.id.bottom_line_text)
-    TextView bottom_line_text;
     @BindView(R.id.test_change)
     TextView test_change;
     @BindView(R.id.test_change_user)
@@ -226,15 +226,12 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
     private AdpHomeListGrideview adpHomeListGrideview;
     private AdpHomeListListview adpHomeListListview;
     private TaskReleaseEty taskEty;
-    private AdpTryMakemoney adpViewPagerDetail;
+    private AdpTryMakemoney mAdapter;
 
     private static final int LIST_COUNT = 2;//tryMakeMoneyAdp 总共有2条数据
     private static final RecyleObj NULL = RecyleObj.make(RecyleType.NONE, null);//空数据
     public static final int WHAT_LOAD_USER_INFO = 0;//加载用户信息
     public static final int WHAT_LOAD_RUN_TASK = 1;//加载正在进行的任务列表
-    public static final int WHAT_UPDATE_VP_HEIGHT = 2;//刷新viewpager高度
-    public static final int WHAT_UPDATE_BOTTOM_LINE = 3;//刷新底线(双击我回到顶部)
-    public static final int WHAT_UPDATE_FOOT_VIEW_CALL_BACK = 4;//刷新发布任务列表的加载更多的状态回调
     public static final int WHAT_TRY_SHOW_HB = 7;//尝试显示红包
 
     private int clickCount = 0;
@@ -242,7 +239,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         @Override
         public void handleMessage(Message msg) {
             super.handleMessage(msg);
-            FgtTryMakeMoney item;
             checkAndInitView();
             switch (msg.what) {
                 case WHAT_LOAD_USER_INFO:
@@ -265,36 +261,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                     }
                     tryMakeMoneyAdp.notifyDataSetChanged();
                     break;
-                case WHAT_UPDATE_VP_HEIGHT://刷新ViewPager高度
-                    item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(curPosition);
-                    if (mViewPager == null || item == null) {
-                        return;
-                    }
-                    int count = item.getDataCount();
-                    ViewGroup.LayoutParams params = mViewPager.getLayoutParams();
-                    params.height = count == 0 ? G.HEIGHT / 2 : (count * getResources().getDimensionPixelSize(R.dimen.content_padding_96) + getResources().getDimensionPixelSize(R.dimen.content_padding));
-                    mViewPager.setLayoutParams(params);
-                    break;
-                case WHAT_UPDATE_FOOT_VIEW_CALL_BACK://发布任务列表的加载更多的回调
-                    String obj = (String) msg.obj;
-                    switch (obj) {
-                        case "onLoadingMore":
-                            bottom_line_text.setText("羊羊努力加载中...");
-                            break;
-                        case "onLoadMoreComplete":
-                            bottom_line_text.setText("上拉下载更多,双击我回到顶部");
-                            break;
-                        case "onSetNoMore":
-                            break;
-                    }
-                    break;
-                case WHAT_UPDATE_BOTTOM_LINE://刷新底线
-                    item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(curPosition);
-                    if (mViewPager == null || item == null) {
-                        return;
-                    }
-                    bottom_line_text.setText(item.isNoMore() ? "我是有底线的,双击我回到顶部" : "双击我回到顶部");
-                    break;
                 case WHAT_TRY_SHOW_HB:
                     isShowRedPackages(activity);
                     break;
@@ -635,7 +601,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         //每次进入主页都刷新一下url配置信息
         CommonUtil.getInstance().initUrlConfigByNet(null, null);
         isShowRedPackage();
-        bottom_line_text.setText("双击我回到顶部");
     }
 
 
@@ -660,13 +625,18 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         /**
          * tablayout
          */
-        adpViewPagerDetail = new AdpTryMakemoney(getChildFragmentManager(), activity);
-        FgtTryMakeMoney firstItem = FgtTryMakeMoney.newInstance(0, "is_hot");
-        adpViewPagerDetail.add(firstItem, "每日必做");
-        adpViewPagerDetail.add(FgtTryMakeMoney.newInstance(1, "about_to_begin"), "即将开始");
+        mAdapter = new AdpTryMakemoney(getChildFragmentManager(), activity);
+        FgtHomeTaskReleaseList firstItem = FgtHomeTaskReleaseList.newInstance(0, "is_hot");
+        FgtHomeTaskReleaseList secondItem = FgtHomeTaskReleaseList.newInstance(1, "about_to_begin");
+        firstItem.setViewPager(mViewPager);
+        firstItem.setSmartRefreshLayout(refresh);
+        secondItem.setViewPager(mViewPager);
+        secondItem.setSmartRefreshLayout(refresh);
+        mAdapter.add(firstItem, "每日必做");
+        mAdapter.add(secondItem, "即将开始");
 
         mViewPager.setOffscreenPageLimit(2);
-        mViewPager.setAdapter(adpViewPagerDetail);
+        mViewPager.setAdapter(mAdapter);
 
         tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
         tabLayout.setupWithViewPager(mViewPager);
@@ -683,12 +653,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                 } else if (position == 1) {
                     willStartClick();
                 }
-                FgtTryMakeMoney lastItem = (FgtTryMakeMoney) adpViewPagerDetail.getItem(position);
                 curPosition = position;
-                FgtTryMakeMoney item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(curPosition);
-                lastItem.setSelected(false);
-                item.setSelected(true);
-                mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);//重新计算viewpager高度
             }
 
             @Override
@@ -799,15 +764,28 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
             }
         });
 
+        refresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                FgtHomeTaskReleaseList item = (FgtHomeTaskReleaseList) mAdapter.getItem(curPosition);
+                if (item == null) {
+                    notifyDataSetChanged();
+                    return;
+                }
+                item.loadMoreData();
+                notifyDataSetChanged();
+            }
 
-        refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
-            public void onRefresh() {
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                 refreshData();
-                refresh.setRefreshing(false);
             }
         });
-
+        RefreshUtil.newInstance().publicParameterRefresh(refresh, activity);
+    }
+    private void notifyDataSetChanged() {
+        refresh.finishRefresh();
+        refresh.finishLoadMore();
     }
 
     /**
@@ -918,6 +896,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                     if (check_net_ll != null)
                         check_net_ll.setVisibility(View.GONE);
                 }
+                notifyDataSetChanged();
             }
         });
         if (upview1 != null) {
@@ -960,8 +939,8 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
             }
         });
         if (!isFirst) {
-            for (int i = 0; i < adpViewPagerDetail.getCount(); i++) {
-                FgtTryMakeMoney item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(i);
+            for (int i = 0; i < mAdapter.getCount(); i++) {
+                FgtHomeTaskReleaseList item = (FgtHomeTaskReleaseList) mAdapter.getItem(i);
                 item.refreshData();
             }
         }
@@ -1030,7 +1009,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
 
     @OnClick({R.id.recharge, R.id.withdrawal, R.id.view_rob_duty,
             R.id.newbie_task, R.id.icon_img_iv, R.id.user_layout,
-            R.id.bottom_line, R.id.homepage_item_money_tv
+            R.id.homepage_item_money_tv
     })
     public void onViewClicked(View view) {
         switch (view.getId()) {
@@ -1069,9 +1048,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                     }
                 });
                 break;
-            case R.id.bottom_line://我是有底线的,双击我回到顶部
-                scrollView.fullScroll(NestedScrollView.FOCUS_UP);
-                break;
         }
     }
 
@@ -1110,7 +1086,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         G.showToast("取消任务成功");
         CommonUtil.getInstance().updateAutoCheck(null);
         refreshTaskList();
-        FgtTryMakeMoney item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(0);//因为放弃了任务,所以刷新可以接收的任务列表
+        FgtHomeTaskReleaseList item = (FgtHomeTaskReleaseList) mAdapter.getItem(0);//因为放弃了任务,所以刷新可以接收的任务列表
         item.refreshData();
     }
 
@@ -1378,18 +1354,6 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
             case ONFRESH_FGT_FAMLLSHEEP:
                 mHandler.sendEmptyMessage(WHAT_LOAD_RUN_TASK);
                 break;
-            case FGT_SHEEP_REFRESH_H:
-                mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);
-                break;
-            case FGT_SHEEP_FOOT_VIEW_CALL_BACK:
-                Message msg = Message.obtain();
-                msg.what = WHAT_UPDATE_FOOT_VIEW_CALL_BACK;
-                msg.obj = event.getData();
-                mHandler.sendMessage(msg);
-                break;
-            case FGT_SHEEP_SET_BOTTOM_LINE:
-                mHandler.sendEmptyMessage(WHAT_UPDATE_BOTTOM_LINE);
-                break;
             case FGT_SHEEP_SHOW_NEW_USER_HONG_BAO:
                 mHandler.sendEmptyMessage(WHAT_TRY_SHOW_HB);
                 break;

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -467,7 +467,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     ListUtil.addAllItem(releaseEtyLists, releaseEtyList);
                     break;
                 case 1:
-                    ListUtil.removeAll(releaseEtyListsBegin, lastCacheReleaseEtyLists);
+                    ListUtil.removeAll(releaseEtyListsBegin, lastCacheReleaseEtyListsBegin);
                     ListUtil.addAllItem(releaseEtyListsBegin, releaseEtyList);
                     break;
             }

+ 2 - 4
app/src/main/res/layout/homepage_act_layout.xml

@@ -5,7 +5,7 @@
     android:layout_height="match_parent"
     android:background="@color/white"
     android:clipChildren="true">
-    <com.sheep.gamegroup.util.SheepSwipeRefreshLayout
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
         android:id="@+id/refresh"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
@@ -99,12 +99,10 @@
                 <!--选项卡-->
                 <include layout="@layout/tablayout_viewpager_layout" />
 
-                <include layout="@layout/find_item_bottom" />
-
             </LinearLayout>
 
         </android.support.v4.widget.NestedScrollView>
-    </com.sheep.gamegroup.util.SheepSwipeRefreshLayout>
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
     <com.kfzs.duanduan.view.DragRelativeLayout
         android:id="@+id/newbie_task"

+ 6 - 12
app/src/main/res/layout/tablayout_viewpager_layout.xml

@@ -6,19 +6,13 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="48dp"
-        android:background="@color/white"
-        android:orientation="vertical">
 
-        <android.support.design.widget.TabLayout
-            android:id="@+id/tabLayout"
-            style="@style/style_tab"
-            android:layout_height="48dp"
-            app:tabIndicatorHeight="2dp" />
-        <include layout="@layout/line_1px_hor" />
-    </LinearLayout>
+    <android.support.design.widget.TabLayout
+        android:id="@+id/tabLayout"
+        style="@style/style_tab"
+        android:layout_height="48dp"
+        app:tabIndicatorHeight="2dp" />
+    <include layout="@layout/line_1px_hor" />
 
 
     <android.support.v4.view.ViewPager