Browse Source

优化任务列表界面刷新

zengjiebin 7 years ago
parent
commit
09dbf1670e

+ 3 - 2
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -201,6 +201,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     protected void initView(Bundle savedInstanceState) {
         setContentView(R.layout.homepage_act_layout);
         activity = getActivity();
+        DataUtil.getInstance().isTaskListChange(getClass());
         showPDialog();
         initView();
         initListener();
@@ -447,7 +448,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
     private void refreshTaskList() {
-        DataUtil.getInstance().resetTaskListChange();
+        DataUtil.getInstance().isTaskListChange(getClass());
         tryMakeMoneyPresenter.returnTask(is_succession, show_game_task);
         RequestParameEty parameEty = new RequestParameEty();
         parameEty.setHashMap(
@@ -716,7 +717,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             userEntity = result;
             loadUserInfo();
         }
-        if(DataUtil.getInstance().isTaskListChange())//数据变化才刷新
+        if(DataUtil.getInstance().isTaskListChange(getClass()))//数据变化才刷新
             refreshTaskList();
         if(onResumeCount == 0)//第一次才调用
             Jump2View.getInstance().tryShowNewbieTask(activity, userEntity, newbie_task);

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java

@@ -232,7 +232,7 @@ public class TaskHelper {
                                             .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                                                 @Override
                                                 public void onNext(BaseMessage baseMessage) {
-                                                    DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
+                                                    DataUtil.getInstance().setTaskListChanged();//主页任务列表发生变化,回到主页后自动刷新
                                                     refreshTask();
                                                 }
 

+ 17 - 0
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -1457,6 +1457,23 @@ public class CommonUtil {
 
     }
 
+    //设置无数据显示 为加载中
+    public void resetEmptyView(View empty_view) {
+        if(empty_view.getVisibility() == View.VISIBLE) {
+            ImageView img_list_empty = empty_view.findViewById(R.id.img_list_empty);
+            if (img_list_empty == null) {
+                if (BuildConfig.DEBUG) G.showToast("无数据layout中找不到ImageView");
+                return;
+            }
+            TextView txt_list_empty = empty_view.findViewById(R.id.txt_list_empty);
+            if (txt_list_empty == null) {
+                if (BuildConfig.DEBUG) G.showToast("无数据layout中找不到TextView");
+                return;
+            }
+            img_list_empty.setImageResource(R.drawable.loading_01);
+            txt_list_empty.setText(R.string.loading);
+        }
+    }
     //设置无数据显示
     public void updateEmptyView(View empty_view, boolean showEmpty) {
         if(showEmpty) {

+ 12 - 7
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -208,24 +208,29 @@ public class DataUtil {
 
     //-----------------------------------------缓存数据部分-----------------------------------------------------结束
     //-----------------------------------------进行任务部分-----------------------------------------------------开始
-    private boolean taskListChange = false;
     /**
      * 是否首页正在运行的任务与发布的任务列表发生变化
      * @return
      */
-    public void resetTaskListChange() {
-        taskListChange = false;
+    public boolean isTaskListChange(Class<?> tagClass) {
+        return isTaskListChange(tagClass.getName());
     }
     /**
      * 是否首页正在运行的任务与发布的任务列表发生变化
      * @return
      */
-    public boolean isTaskListChange() {
-        return taskListChange;
+    public boolean isTaskListChange(String tag) {
+        if(tagList.contains(tag)){//包含tag,说明使用该tag的地方已经刷新数据
+            return false;
+        } else {
+            tagList.add(tag);
+            return true;
+        }
     }
+    private List<String> tagList = ListUtil.emptyList();
 
-    public void setTaskListChange(boolean taskListChange) {
-        this.taskListChange = taskListChange;
+    public void setTaskListChanged(){
+        tagList.clear();
     }
     //-----------------------------------------进行任务部分-----------------------------------------------------结束
 }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -864,7 +864,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                         taskReleaseEty.getTask().setRelease_task_id(taskReleaseEty.getId());
                         CommonUtil.getInstance().setTAskEnty(taskReleaseEty.getTask());
 
-                        DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
+                        DataUtil.getInstance().setTaskListChanged();//主页任务列表发生变化,回到主页后自动刷新
 
                         getAcceptedTaskDetail(releaseTaskId);
 

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

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.view.fragment;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
@@ -45,7 +44,6 @@ import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
 
-import static com.sheep.gamegroup.model.util.CacheInterceptor.DEFAULT_SAVE_TIME;
 
 /**
  * 试玩赚钱
@@ -121,6 +119,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     @Override
     public void onViewCreated() {
         activity = getActivity();
+        DataUtil.getInstance().isTaskListChange(getClass());
         initView();
         initData();
     }
@@ -191,29 +190,43 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     }
     //强制刷新数据
     public void refreshData(){
+        DataUtil.getInstance().isTaskListChange(getClass());
         isFirstCache = false;
         refresh.setRefreshing(true);
         mInitData();
     }
     public void mInitData() {
+        if(!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+            notifyDataSetChanged();
+        }
+        CommonUtil.getInstance().resetEmptyView(empty_view);
         //加载缓存
         type = 0;
         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(is_succession, 0), TaskAcceptedEty.class);
-            }
-            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
-                acceptedEtyList.clear();
-            } else {
-                acceptedEtyList = cacheTaskAcceptedEtyList;
-            }
+            //注释掉获取缓存的正在进行的任务
+//            List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
+//            if(isGameTask) {
+//                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
+//            } else {
+//                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(is_succession, 0), TaskAcceptedEty.class);
+//            }
+//            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
+//                acceptedEtyList.clear();
+//            } else {
+//                acceptedEtyList = cacheTaskAcceptedEtyList;
+//            }
             getFromACache(type);
         }
         //加载网络数据
         type = 0;
+        getFromNetWork(type);
+    }
+
+    /**
+     * 获取正在运行的任务
+     */
+    private void initAcceptedTaskList() {
         if(isGameTask){
             presenter.runGameTask();
         } else {
@@ -266,7 +279,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void giveUpTaskSuccesView(Object object) {
         G.showToast("取消任务成功");
         CommonUtil.getInstance().setTAskEnty(null);
-        DataUtil.getInstance().setTaskListChange(true);
+        DataUtil.getInstance().setTaskListChanged();
         refreshData();
     }
 
@@ -291,28 +304,17 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 } else {
                     acceptedEtyList = taskAcceptedEty;
                 }
+                notifyDataSetChanged();
             }
         }
-        getFromNetWork(type);
     }
 
     @Override
-    public void failReturnTask2View(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(" 网络错误!");
+    public void failReturnTask2View(Object object) {
+        if(!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+            notifyDataSetChanged();
         }
-        getFromNetWork(type);
     }
 
     /**
@@ -332,8 +334,9 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     releaseEtyListsBegin = releaseEtyList;
                     break;
             }
+            notifyDataSetChanged();
         }
-        loadReleaseOrNotifyAdapter();
+        getFromNetWork(++type);
     }
 
     @Override
@@ -346,9 +349,6 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 releaseEtyListsBegin.clear();
                 break;
         }
-        loadReleaseOrNotifyAdapter();
-    }
-    private void loadReleaseOrNotifyAdapter(){
         notifyDataSetChanged();
         getFromNetWork(++type);
     }
@@ -361,34 +361,25 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         }
     }
 
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        if(tryMakeMoneyAdp != null){
-            tryMakeMoneyAdp.cancelAllTimers();
-        }
-    }
-
+    private int onResumeCount = 0;
     @Override
     public void onResume() {
         super.onResume();
-        if (presenter != null && DataUtil.getInstance().isTaskListChange()) {
-            refreshData();
+        if (onResumeCount > 0 && presenter != null){
+            if(DataUtil.getInstance().isTaskListChange(getClass())) {//需要全部刷新
+                refreshData();
+            } else {
+                initAcceptedTaskList();
+            }
         }
+        onResumeCount++;
     }
 
     @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        try {
-
-            if(tryMakeMoneyAdp != null){
-
-                tryMakeMoneyAdp.refreshAdapter();
-            }
-        }catch (Exception e){
-            e.printStackTrace();
+    public void onPause() {
+        super.onPause();
+        if(tryMakeMoneyAdp != null){
+            tryMakeMoneyAdp.cancelAllTimers();
         }
     }
     /**
@@ -427,6 +418,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
      */
     private void getFromNetWork(int type){
         if(type > 1){
+            initAcceptedTaskList();
             return;
         }
         RequestParameEty parameEty = new RequestParameEty();