Parcourir la source

修复搜索游戏与任务界面中连续点击搜索数据可能重复的bug;
添加h5跳转小绵羊支付功能

zengjiebin il y a 7 ans
Parent
commit
ebd9c87487

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -2527,6 +2527,6 @@ public class Jump2View {
      * @param activity
      */
     public void gotoYfShop(Activity activity) {
-        goWeb(activity, Config.YF_SHOP_HOME, Config.YF_SHOP_NAME);
+        goWeb(activity, Config.YF_SHOP_HOME_SHEEP, Config.YF_SHOP_NAME);
     }
 }

+ 7 - 0
app/src/main/java/com/sheep/gamegroup/util/StringUtils.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.util;
 import android.content.ClipData;
 import android.content.ClipboardManager;
 import android.content.Context;
+import android.net.Uri;
 import android.text.TextUtils;
 
 import com.lqr.emoji.EmotionLayout;
@@ -379,4 +380,10 @@ public class StringUtils {
         }
         return null;
     }
+
+    //获取url中指定参数
+    public static String getQueryParameter(String url, String key) {
+        Uri uri = Uri.parse(url);
+        return uri.getQueryParameter(key);
+    }
 }

+ 9 - 13
app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchAppOrTask.java

@@ -1,15 +1,10 @@
 package com.sheep.gamegroup.view.activity;
 
-import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
-import android.support.v7.widget.AppCompatAutoCompleteTextView;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
-import android.text.Editable;
 import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.KeyEvent;
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 import android.widget.ImageView;
@@ -18,9 +13,7 @@ import android.widget.TextView;
 import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
 import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
 import com.sheep.gamegroup.absBase.BaseActivity;
-import com.sheep.gamegroup.absBase.BaseContainerActivity;
 import com.sheep.gamegroup.absBase.IHomePageSearch;
-import com.sheep.gamegroup.absBase.ISearch;
 import com.sheep.gamegroup.absBase.ISearchRecord;
 import com.sheep.gamegroup.greendao.DDProviderHelper;
 import com.sheep.gamegroup.greendao.download.SearchRecord;
@@ -33,12 +26,10 @@ import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdpTitleInfoList;
-import com.sheep.gamegroup.view.fragment.FgtSearchApp;
 import com.sheep.gamegroup.view.fragment.FgtSearchAppOrTask;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
-import com.umeng.socialize.utils.Log;
 
 import org.afinal.simplecache.ApiKey;
 
@@ -47,7 +38,6 @@ import java.util.Collections;
 import java.util.List;
 
 import butterknife.BindView;
-import butterknife.OnClick;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -180,7 +170,7 @@ public class ActSearchAppOrTask extends BaseActivity {
         //排序
         Collections.sort(titleInfoListList);
         //刷新
-        recyclerView.getAdapter().notifyDataSetChanged();
+        ViewUtil.notifyDataSetChanged(recyclerView);
         if (isTitleInfoListEmpty()) {
             frame_container.setVisibility(View.VISIBLE);
             recyclerView.setVisibility(View.INVISIBLE);
@@ -205,7 +195,7 @@ public class ActSearchAppOrTask extends BaseActivity {
                         @Override
                         public void onClick(View view) {
                             list.remove(item);
-                            recyclerView.getAdapter().notifyDataSetChanged();
+                            ViewUtil.notifyDataSetChanged(recyclerView);
                             DDProviderHelper.getInstance().deleteSearchRecord((SearchRecord) item);
                             if (isTitleInfoListEmpty()) {
                                 frame_container.setVisibility(View.VISIBLE);
@@ -238,6 +228,12 @@ public class ActSearchAppOrTask extends BaseActivity {
 
     //尝试搜索游戏
     private void toSearchApp() {
+        if(fgtSearchAppOrTask == null){
+            return;
+        }
+        if(fgtSearchAppOrTask.isLoadingData()){
+            return;
+        }
         recyclerView.setVisibility(View.INVISIBLE);
         frame_container.setVisibility(View.VISIBLE);
         String inputText = TitleBarUtils.getInstance().getSearchText(this);
@@ -249,7 +245,7 @@ public class ActSearchAppOrTask extends BaseActivity {
             searchRecord.setCount(1);
             searchRecordList.add(searchRecord);
             DDProviderHelper.getInstance().addOrUpdateSearchRecord(searchRecord, null);
-            recyclerView.getAdapter().notifyDataSetChanged();
+            ViewUtil.notifyDataSetChanged(recyclerView);
         }
         fgtSearchAppOrTask.toSearch(inputText);
     }

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

@@ -17,14 +17,19 @@ import android.view.View;
 
 import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.js.BaseActWeb;
 import com.sheep.gamegroup.util.js.KFZSJs;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
+import com.sheep.jiuyan.samllsheep.Config;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.tencent.smtt.sdk.ValueCallback;
 import com.tencent.smtt.sdk.WebChromeClient;
@@ -254,7 +259,11 @@ public class ActWebX5 extends BaseActWeb {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
                 //微信H5支付核心代码
-                if (url.startsWith("weixin://wap/pay?")) {
+                if (url.startsWith(Config.SHEEP_PAY)) {
+                    String order_no = StringUtils.getQueryParameter(url, Config.YF_SHOP_ORDER_NUMBER_KEY);
+                    Jump2View.getInstance().goActPay(ActWebX5.this, order_no, SpUtils.getToken(SheepApp.getInstance()));
+                    return true;
+                } else if (url.startsWith("weixin://wap/pay?")) {
                     try {
                         Intent intent = new Intent();
                         intent.setAction(Intent.ACTION_VIEW);

+ 15 - 3
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment3.java

@@ -7,8 +7,6 @@ import android.view.View;
 
 import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.BaseRefreshLoadMoreFragment;
-import com.sheep.gamegroup.absBase.ILoadMore;
-import com.sheep.gamegroup.absBase.IRefresh;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
@@ -26,7 +24,6 @@ import java.util.List;
 import butterknife.BindView;
 import io.reactivex.Observable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
-import rx.functions.Action1;
 import io.reactivex.schedulers.Schedulers;
 
 /**
@@ -85,12 +82,14 @@ public abstract class BaseListFragment3<T> extends BaseRefreshLoadMoreFragment{
 
     //加载更多数据
     public void loadMoreData() {
+        initDataStatus = STATUS_ING;
         if (hasMore()) {
             page += 1;
             initData();
         } else {
             setNoMore(true);
             refreshOrLoadMoreComplete();
+            initDataStatus = STATUS_NONE;
         }
     }
     //还有数据没有获取
@@ -119,6 +118,7 @@ public abstract class BaseListFragment3<T> extends BaseRefreshLoadMoreFragment{
 
     //加载数据
     public void initData() {
+        initDataStatus = STATUS_ING;
         final String urlKey = getKey(page, per_page);
         if (isFirstGetACache()) {
             //先尝试获取缓存数据
@@ -150,14 +150,17 @@ public abstract class BaseListFragment3<T> extends BaseRefreshLoadMoreFragment{
                                 ListUtil.removeAll(list, lastCacheList);
                             List<T> newList = conversion.convert(baseMessage, page);
                             loadList(newList);
+                            initDataStatus = STATUS_FINISH;
                         } else {
                             notifyDataSetChanged();
+                            initDataStatus = STATUS_NONE;
                         }
                     }
 
                     @Override
                     public void onError(BaseMessage baseMessage) {
                         notifyDataSetChanged();
+                        initDataStatus = STATUS_NONE;
                     }
                 });
     }
@@ -206,6 +209,7 @@ public abstract class BaseListFragment3<T> extends BaseRefreshLoadMoreFragment{
 
     //通过刷新来重新加载数据
     public void refreshData() {
+        initDataStatus = STATUS_ING;
         clear();
         ViewUtil.notifyDataSetChanged(view_list);
         initData();
@@ -243,4 +247,12 @@ public abstract class BaseListFragment3<T> extends BaseRefreshLoadMoreFragment{
 
     protected abstract Class<T> getTClass();
 
+    protected int initDataStatus = STATUS_NONE;//加载数据的状态
+    public static final int STATUS_NONE = 0;
+    public static final int STATUS_ING = 1;
+    public static final int STATUS_FINISH = 2;
+    //是否正在刷新或者加载更多数据
+    public boolean isLoadingData(){
+        return initDataStatus == STATUS_ING;
+    }
 }

+ 3 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/Config.java

@@ -6,6 +6,7 @@ package com.sheep.jiuyan.samllsheep;
 
 public class Config {
     public final static String BUGLY_APPID = "0dd998212c";
+    public static final String SHEEP_PAY = "sheep_pay://";
     public static boolean USE_CHRISTMAS_THEME = true;//是否使用圣诞主题
 
     public static int getGameOrTaskOrGiftLayoutId() {
@@ -15,6 +16,8 @@ public class Config {
     //有范商城
     public final static String YF_SHOP_NAME = "有范商城";
     public final static String YF_SHOP_HOME = "http://shop.17xmy.com/mobile/";//有范商城主页地址
+    public final static String YF_SHOP_HOME_SHEEP = "http://shop.17xmy.com/mobile?pf=android.sheep.app";//小绵羊加载的有范商城主页地址
+    public static final String YF_SHOP_ORDER_NUMBER_KEY = "order_number";
 
 
     //以龙猫开头的则认为是龙猫app