Kaynağa Gözat

幂动科技下载状态回调与无数据状态修改

zengjiebin 7 yıl önce
ebeveyn
işleme
64ae528b21

+ 3 - 0
app/src/main/java/com/kfzs/duanduan/event/EventTypes.java

@@ -33,4 +33,7 @@ public enum EventTypes {
     DELETE_GAME_ACCOUNT_REFRESH,//游戏删除账号,刷新界面
     GENERATION_ACCOUNT_REFRESH,//游戏代充,刷新界面
     GENERATION_ACCOUNT_REFRESH_ADAPTER,//游戏代充,刷新界面(下载)
+
+    //幂动科技
+    REFRESH_MING_DONG,//刷新界面
 }

+ 26 - 17
app/src/main/java/com/kfzs/duanduan/fragment/FgtMiDong.java

@@ -81,14 +81,14 @@ public class FgtMiDong extends BaseCompatFragment {
         activity = getActivity();
         ButterKnife.bind(this, mContentView);
         initView();
-        initData();
+        initData(false);
     }
     private void initView(){
         title.setVisibility(View.GONE);
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
-                initData();
+                initData(true);
                 refresh.setRefreshing(false);
             }
         });
@@ -119,7 +119,7 @@ public class FgtMiDong extends BaseCompatFragment {
         initListen();
     }
 
-    private void initData(){
+    private void initData(boolean isRefresh){
         empty_view.setVisibility(View.INVISIBLE);
         SysAppUtil.checkNet(new Action1<Integer>() {
             @Override
@@ -133,19 +133,16 @@ public class FgtMiDong extends BaseCompatFragment {
                 }
             }
         });
-        loadData(false);
+        loadData(false, isRefresh);
     }
 
     private void notifyDataSetChanged(){
-        if(ListUtil.isEmpty(listData) )
-            empty_view.setVisibility(View.VISIBLE);
-        else
-            empty_view.setVisibility(View.GONE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, listData.isEmpty());
         refresh.setRefreshing(false);
         adListAdapter.notifyDataSetChanged();
     }
 
-    private void loadData(boolean isLoadMore) {
+    private void loadData(boolean isLoadMore, final boolean isRefresh) {
         /**
          * 异步获取普通任务,回调是在主线程,可以直接更新UI,加载更多的逻辑只需更新pageNo和pageSize即可。
          */
@@ -163,20 +160,22 @@ public class FgtMiDong extends BaseCompatFragment {
                             listData.clear();
                         listData.addAll(list);
                         adListAdapter.setData(listData);
-                        notifyDataSetChanged();
                     }
+                    notifyDataSetChanged();
                 }
 
                 @Override
                 public void onLoadAdFailure() {
                     refresh.setRefreshing(false);
-                    G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
+                    if(isRefresh)
+                        G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
                     notifyDataSetChanged();
                 }
 
                 @Override
                 public void onAdEmpty() {
-                    G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                    if(isRefresh)
+                        G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
                     notifyDataSetChanged();
 
                 }
@@ -195,23 +194,26 @@ public class FgtMiDong extends BaseCompatFragment {
                             listData.clear();
                         listData.addAll(list);
                         adListAdapter.setData(listData);
-                        notifyDataSetChanged();
                     } else {
-                        G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                        if(isRefresh)
+                            G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
                     }
+                    notifyDataSetChanged();
                 }
 
                 @Override
                 public void onLoadAdFailure() {
                     refresh.setRefreshing(false);
-                    G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
+                    if(isRefresh)
+                        G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
                     notifyDataSetChanged();
                 }
 
                 @Override
                 public void onAdEmpty() {
                     refresh.setRefreshing(false);
-                    G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                    if(isRefresh)
+                        G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
                     notifyDataSetChanged();
 
                 }
@@ -227,7 +229,7 @@ public class FgtMiDong extends BaseCompatFragment {
                 super.onScrollStateChanged(recyclerView, newState);
                 if(newState == RecyclerView.SCROLL_STATE_IDLE){//滑动到了底部
                     if(listData.size() >= pageNo*pageSize){
-                        loadData(true);
+                        loadData(true, false);
                     }else {
 //                        G.showToast("没有更多数据了");
                     }
@@ -236,4 +238,11 @@ public class FgtMiDong extends BaseCompatFragment {
             }
         });
     }
+    /**
+     * 刷新数据
+     */
+    public void refreshData() {
+        if(adListAdapter != null)
+            adListAdapter.notifyDataSetChanged();
+    }
 }

+ 33 - 3
app/src/main/java/com/sheep/gamegroup/view/activity/ActMiDong.java

@@ -9,15 +9,22 @@ import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.kfzs.duanduan.event.BigEvent;
+import com.kfzs.duanduan.event.EventTypes;
 import com.kfzs.duanduan.fragment.FgtMiDong;
 import com.kfzs.duanduan.mine.GiftpackListAdapter;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
 import java.lang.reflect.Field;
+import java.util.List;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
@@ -53,12 +60,15 @@ public class ActMiDong extends BaseActivity {
     public void initListener() {
 
     }
-
+    private int curPosition = 0;
+    private List<FgtMiDong> fgtMiDongList = ListUtil.emptyList();
     @Override
     public void initData() {
         mAdapter = new GiftpackListAdapter(getSupportFragmentManager(), activity);
-        mAdapter.add(FgtMiDong.newInstance(0), "普通任务");
-        mAdapter.add(FgtMiDong.newInstance(1), "签到任务");
+        fgtMiDongList.add(FgtMiDong.newInstance(0));
+        fgtMiDongList.add(FgtMiDong.newInstance(1));
+        mAdapter.add(fgtMiDongList.get(0), "普通任务");
+        mAdapter.add(fgtMiDongList.get(1), "签到任务");
         pager.setAdapter(mAdapter);
         indicator.setupWithViewPager(pager);
         pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@@ -69,6 +79,7 @@ public class ActMiDong extends BaseActivity {
 
             @Override
             public void onPageSelected(int i) {
+                curPosition = i;
 //                FIND_TAG.onEvent("find_tag_name", ListUtil.hasIndex(list, i - 1) ? list.get(i - 1).getName() : "全部");
             }
 
@@ -89,5 +100,24 @@ public class ActMiDong extends BaseActivity {
         super.onCreate(savedInstanceState);
         // TODO: add setContentView(...) invocation
         ButterKnife.bind(this);
+        EventBus.getDefault().register(this);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event){
+        switch (event.getEventTypes()){
+            case REFRESH_MING_DONG:
+                FgtMiDong item = ListUtil.getIndex(fgtMiDongList, curPosition);
+                if(item != null){
+                    item.refreshData();
+                }
+                break;
+        }
     }
 }

+ 26 - 10
app/src/main/java/com/sheep/gamegroup/view/adapter/AdListAdapter.java

@@ -16,9 +16,13 @@ import com.bumptech.glide.Glide;
 import com.mdad.sdk.mdsdk.AdManager;
 import com.mdad.sdk.mdsdk.common.AdData;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import org.afinal.simplecache.ACache;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Created by hrs on 2018/6/6.
@@ -124,19 +128,11 @@ public class AdListAdapter extends android.support.v7.widget.RecyclerView.Adapte
                     if (size == null)
                         size = " ";
                     if (!isSign) {
-                        if (isAppInstalled(mContext, data.getPackage_name())) {
-                            appViewHolder.mDownloadTv.setText("继续体验");
-                        } else {
-                            appViewHolder.mDownloadTv.setText("立即下载");
-                        }
+                        setDownloadTvText(appViewHolder, data);
                     } else {
                         String todayTask = data.getDate();
                         if (todayTask!=null && todayTask.equals(TimeStamp2Date(System.currentTimeMillis(), "yyyy-MM-dd"))) {
-                            if (isAppInstalled(mContext, data.getPackage_name())) {
-                                appViewHolder.mDownloadTv.setText("继续体验");
-                            } else {
-                                appViewHolder.mDownloadTv.setText("立即下载");
-                            }
+                            setDownloadTvText(appViewHolder, data);
                             appViewHolder.mDownloadTv.setEnabled(true);
                             appViewHolder.mDownloadTv.setBackgroundColor(Color.parseColor("#d12121"));
                         } else {
@@ -166,6 +162,26 @@ public class AdListAdapter extends android.support.v7.widget.RecyclerView.Adapte
         }
     }
 
+    private void setDownloadTvText(AppViewHolder appViewHolder, AdData data) {
+        if (isAppInstalled(mContext, data.getPackage_name())) {
+            appViewHolder.mDownloadTv.setText("继续体验");
+        } else {
+            String downloadState = ACache.get(SheepApp.getInstance()).getAsString(String.format(Locale.CHINA, "%s%s", AdManager.class.getSimpleName(), data.getId()));
+            switch (downloadState){
+                case "onDownloadStart":
+                    appViewHolder.mDownloadTv.setText("正在下载");
+                    break;
+                case "onDownloadSuccess":
+                    appViewHolder.mDownloadTv.setText("立即安装");
+                    break;
+                case "onDownloadFail":
+                default:
+                    appViewHolder.mDownloadTv.setText("立即下载");
+                    break;
+            }
+        }
+    }
+
     // 将Unix时间戳转变为日期,如调用TimeStampToDate("1252639886", "yyyy-MM-dd
     // HH:mm:ss")返回值:2009-11-09 11:31:26
 

+ 32 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -7,7 +7,11 @@ import android.support.multidex.MultiDex;
 import android.util.DisplayMetrics;
 
 import com.kfzs.duanduan.ActMain;
+import com.kfzs.duanduan.event.BigEvent;
+import com.kfzs.duanduan.event.EventTypes;
 import com.kfzs.duanduan.react.SharedPreferences;
+import com.mdad.sdk.mdsdk.AdManager;
+import com.mdad.sdk.mdsdk.AppDownloadListener;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
@@ -27,6 +31,11 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.tencent.bugly.Bugly;
 import com.tencent.bugly.beta.Beta;
 
+import org.afinal.simplecache.ACache;
+import org.greenrobot.eventbus.EventBus;
+
+import java.util.Locale;
+
 import rx.functions.Action1;
 
 /**
@@ -90,6 +99,29 @@ public class SheepApp extends BaseApplication {
             connectAddress = ConnectAddress.sheep.getDefultConnectAddress();
             registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
             initNet();
+
+            AdManager.getInstance(mContext).setDownloadListener(new AppDownloadListener() {
+                @Override
+                public void onDownloadStart(int id) {
+                    LogUtil.println("AdManager", "onDownloadStart", id);
+                    ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadStart");
+                    EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+                }
+
+                @Override
+                public void onDownloadFail(int id) {
+                    LogUtil.println("AdManager","onDownloadFail", id);
+                    ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadFail");
+                    EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+                }
+
+                @Override
+                public void onDownloadSuccess(int id) {//没有收到回调
+                    LogUtil.println("AdManager","onDownloadSuccess", id);
+                    ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadSuccess");
+                    EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+                }
+            });
         }
     }