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

// 数据返回异常再请求 ,最多5次

FANGLH 8 лет назад
Родитель
Сommit
02874550de

+ 2 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UUAttentionAdapter.java

@@ -7,6 +7,8 @@ import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.core.app.MyApplication;
 import com.core.utils.CommonUtil;

+ 3 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UURankingAdapter.java

@@ -7,6 +7,8 @@ import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.core.app.MyApplication;
 import com.core.utils.CommonUtil;
@@ -73,6 +75,7 @@ public class UURankingAdapter extends BaseAdapter{
             viewHolder.steps_tv.setTextColor(mContext.getResources().getColor(R.color.approvaling));
         else
             viewHolder.steps_tv.setTextColor(mContext.getResources().getColor(R.color.green));
+
         viewHolder.steps_tv.setText(model.getToalrank().get(position).getAs_uusteps());
         viewHolder.prise_tv.setText(model.getToalrank().get(position).getAs_prise());
         AvatarHelper.getInstance().display(CommonUtil.getNumByString(model.getToalrank().get(position).getAs_userid()) + "", viewHolder.photo_img, true, false);//显示圆角图片

+ 72 - 36
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/UURanking.java

@@ -9,6 +9,7 @@ import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.support.v4.content.LocalBroadcastManager;
+import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ImageView;
@@ -77,10 +78,12 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
     private int my_rank = -1;
     private CircleImageView first_ranking_im;
     private TextView first_ranking_tv;
-    private String first_ranking_imid = null;  //第一名imid
-    private String first_ranking_name = null; //第一名名字
+//    private String first_ranking_imid = null;  //第一名imid
+//    private String first_ranking_name = null; //第一名名字
     private String shareStepStr = "我正在使用UU运动计步功能,你也一起来吧";
     private CoreService mService;
+    private Boolean canShowAtt = false; // Attend,All数据源不断改变,为了不重复刷新适配器,当符合canShowAtt == true && canShowAll == true 再一起刷新适配器
+    private Boolean canShowAll = false;
     private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -190,12 +193,12 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
 
     }
     private int Timeout = 0;
+    private int testRequest = 0;
     private void initData() {
         if (!CommonUtil.isNetWorkConnected(this)) {
             ToastMessage(getString(R.string.common_notlinknet));
             return;
         }
-
         progressDialog.show();
         //获取所有人的当天步数数据
         HttpClient httpClient = new HttpClient.Builder(Constant.BASE_STEP_URL).isDebug(true).build(true);
@@ -209,14 +212,24 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
             @Override
             public void onResponse(Object o) {
                 if (!JSONUtil.validate(o.toString()) || o == null) return;
-                LogUtil.prinlnLongMsg("appStepsrankflh", Timeout+"-"+o.toString()+"");
-
-                if (o.toString().contains("resultCode") && o.toString().contains("resultMsg")){
+                LogUtil.prinlnLongMsg("appStepsrankTimeout", Timeout+"-"+o.toString()+"");
+                LogUtil.prinlnLongMsg("appStepsranktestRequest", testRequest+"-"+o.toString()+"");
+                if ((o.toString().contains("resultCode") && o.toString().contains("resultMsg"))
+                        || (o.toString().contains("data") &&
+                        "java.lang.NullPointerException".equals(JSON.parseObject(o.toString()).getString("data"))) ){
+                    testRequest ++;
+                    if (testRequest >= 5) {
+                        progressDialog.dismiss();
+                        ToastMessage("数据获取异常,请稍后再试");
+                    }else {   // 数据返回异常再请求 ,最多5次
+                        initData();
+                    }
+                }else if (o.toString().contains("toalrank"))
+                    handleData(o.toString());
+                else{
                     progressDialog.dismiss();
                     ToastMessage("数据获取异常,请稍后再试");
-                    return;
-                }else
-                    handleData(o.toString());
+                }
             }
 
             @Override
@@ -236,8 +249,12 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
     private void handleData(String s) {
         try {
             mStepsRankingBean = JSON.parseObject(s.toString(),StepsRankingBean.class);
-            if (mStepsRankingBean == null) return;
-
+            if (mStepsRankingBean == null)  {
+                progressDialog.dismiss();
+                Log.i("mStepsRankingBean","mStepsRankingBean==null");
+                ToastMessage("数据获取异常,请稍后再试");
+                return;
+            }
             //getPricelist()有数据不为空,自己点赞过别人
             if (!ListUtils.isEmpty(mStepsRankingBean.getPricelist())){
 
@@ -274,44 +291,44 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
 
                         }
                         //所有人中为自己时,看自己的被点赞次数>0 设置setPrised(true)
-                        if (MyApplication.getInstance().mLoginUser.getUserId().equals(mStepsRankingBean.getToalrank().get(i).getAs_userid())
-                                && CommonUtil.getNumByString(mStepsRankingBean.getToalrank().get(i).getAs_prise())>0)
-                            mStepsRankingBean.getToalrank().get(i).setPrised(true);
+                        if (MyApplication.getInstance().mLoginUser.getUserId().equals(mStepsRankingBean.getToalrank().get(i).getAs_userid()) &&
+                                CommonUtil.getNumByString(mStepsRankingBean.getToalrank().get(i).getAs_prise())>0)
+                                mStepsRankingBean.getToalrank().get(i).setPrised(true);
 
                         if (i==mStepsRankingBean.getToalrank().size()-1){
-                            mRankAdapter.setModel(mStepsRankingBean);
-                            mAllPtlv.setAdapter(mRankAdapter);
-                            mRankAdapter.notifyDataSetChanged();
+                            canShowAll=true;
+                            showAttAndAllRank();
                         }
 
                     }
                 }
 
             }else {  //getPricelist()数据为空,自己没点赞过别人
+                for (int i = 0; i < mStepsRankingBean.getToalrank().size(); i++) {
+                    mStepsRankingBean.getToalrank().get(i).setPrised(false);
+                    if (i==mStepsRankingBean.getToalrank().size()-1){
+                        canShowAll=true;
+                        showAttAndAllRank();
+                    }
+                }
                 for (int i = 0; i < mStepsRankingBean.getAttrank().size(); i++) {
                     mStepsRankingBean.getAttrank().get(i).setPrised(false);
                     if (i==mStepsRankingBean.getAttrank().size()-1){
                         handleAttendRank(mStepsRankingBean);
                     }
                 }
-                for (int i = 0; i < mStepsRankingBean.getToalrank().size(); i++) {
-                    mStepsRankingBean.getToalrank().get(i).setPrised(false);
-                    if (i==mStepsRankingBean.getToalrank().size()-1){
-                        mRankAdapter.setModel(mStepsRankingBean);
-                        mAllPtlv.setAdapter(mRankAdapter);
-                        mRankAdapter.notifyDataSetChanged();
-                    }
-                }
+
             }
             if (mStepsRankingBean.getAttrank().size()>0)
                 mAttentionLl.setVisibility(View.VISIBLE);
             else
                 mAttentionLl.setVisibility(View.GONE);
-            LogUtil.prinlnLongMsg("mStepsRankingBean", JSON.toJSONString(mStepsRankingBean)+"");
-            showMyInfo();
         }catch (Exception e){
             progressDialog.dismiss();
+            ToastMessage("数据解析异常,请稍后再试");
             e.printStackTrace();
+            Log.i("Exceptionflh",testRequest+"数据解析异常,请稍后再试");
+            LogUtil.prinlnLongMsg("Exceptionflh",testRequest+"-"+e.toString());
         }
     }
 
@@ -330,16 +347,35 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
                     }
                 }
                 if (i==mStepsRankingBean.getAttrank().size()-1){
-                    mAttenAdapter.setModel(mStepsRankingBean);
-                    mAttentionPtlv.setAdapter(mAttenAdapter);
-                    mAttenAdapter.notifyDataSetChanged();
-
-                    LogUtil.prinlnLongMsg("mStepsRankingBeanhar", JSON.toJSONString(mStepsRankingBean)+"");
+                    canShowAtt = true;
+                    showAttAndAllRank();
                 }
             }
         }
     }
 
+    private void showAttAndAllRank() {
+        if (canShowAtt && canShowAll){
+            showMyInfo();
+
+            mRankAdapter.setModel(mStepsRankingBean);
+            mAllPtlv.setAdapter(mRankAdapter);
+            mRankAdapter.notifyDataSetChanged();
+
+            mAttenAdapter.setModel(mStepsRankingBean);
+            mAttentionPtlv.setAdapter(mAttenAdapter);
+            mAttenAdapter.notifyDataSetChanged();
+
+            LogUtil.prinlnLongMsg("mStepsRankingBeanLast", JSON.toJSONString(mStepsRankingBean)+"");
+        }
+        Log.i("showAttAndAllRank",testRequest+"-"+canShowAtt+","+canShowAll);
+//        if (MyApplication.getInstance().mLoginUser.getUserId().equals("108340"))
+//            ToastMessage("canShowAtt,canShowAll="+canShowAtt+","+canShowAll);
+//        testRequest++;
+//        if (testRequest<999999)
+//            initData();
+    }
+
     private void showMyInfo() {
         if (mStepsRankingBean == null || ListUtils.isEmpty(mStepsRankingBean.getToalrank())) return;
         //显示当前登录人的步数排名
@@ -355,8 +391,9 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
             }
         }
 
-        first_ranking_imid = mStepsRankingBean.getToalrank().get(0).getAs_userid();
-        first_ranking_name = mStepsRankingBean.getToalrank().get(0).getAs_username();
+        //显示第一名信息
+        String first_ranking_imid = mStepsRankingBean.getToalrank().get(0).getAs_userid();
+        String first_ranking_name = mStepsRankingBean.getToalrank().get(0).getAs_username();
         if (!StringUtil.isEmpty(first_ranking_imid) && !StringUtil.isEmpty(first_ranking_name)){
             AvatarHelper.getInstance().display(CommonUtil.getNumByString(first_ranking_imid) + "", first_ranking_im, true, false);//显示圆角图片
             first_ranking_tv.setText(first_ranking_name+"获得了排行榜第一");
@@ -477,7 +514,7 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
         }
     }
 
-    //对于处理点击关注或者取消关注后返回的焦点聚焦,回到之前位置的问题
+    //对于处理点击关注或者取消关注后返回的焦点聚焦,回到之前位置的问题,不然会出现被挤出去情况
     private void doPositionFocus() {
         if (all_position != -1 && all_position<mStepsRankingBean.getToalrank().size()){
             mAllPtlv.setSelection(all_position);
@@ -488,7 +525,6 @@ public class UURanking extends BaseActivity implements View.OnClickListener {
         }else if (att_position != -1 && att_position >= mStepsRankingBean.getAttrank().size()) {
             mAttentionPtlv.setSelection(mStepsRankingBean.getAttrank().size() - 1);
         }
-
         progressDialog.dismiss();
     }