From 225473d256d26d4d8f9469038d02d28ac1c866be Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期三, 03 二月 2021 14:24:57 +0800
Subject: [PATCH] 增加RTK全部信息展示页

---
 app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java |  122 ++++++++++++++++++++++++++++++----------
 1 files changed, 90 insertions(+), 32 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
index 2aa333e..27ab60c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
@@ -1,6 +1,13 @@
 package safeluck.drive.evaluation.fragment;
 
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.AbsoluteSizeSpan;
+import android.text.style.ForegroundColorSpan;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -18,18 +25,27 @@
 
 import com.anyun.exam.lib.AYSdk;
 import com.anyun.basecommonlib.MyLog;
+import com.google.gson.Gson;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 
 import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.Constant;
 import safeluck.drive.evaluation.DB.gps.GPSInfo;
 import safeluck.drive.evaluation.DB.gps.GpsInfoViewModel;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
+import safeluck.drive.evaluation.MainActivity;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.adapter.BaseDataInfoAdapter;
 import safeluck.drive.evaluation.adapter.GpsInfoAdapter;
+import safeluck.drive.evaluation.bean.BaseDataUIBean;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.bean.RTKInfoBean;
+import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.util.Utils;
 
 /**
@@ -44,9 +60,10 @@
     private static final String TAG = "GpsInfoFragment";
 
     private ListView lv;
-    private GpsInfoAdapter gpsInfoAdapter;
-    private List<String> gpsinfos = new ArrayList<>();
-
+    private BaseDataInfoAdapter gpsInfoAdapter;
+    private Gson gson = new Gson();
+    private SpannableString spannableString;
+    private List<BaseDataUIBean> datas = new ArrayList<>();
 
     public static SupportFragment newInstance() {
         return new GpsInfoFragment();
@@ -58,42 +75,83 @@
 
         View view = inflater.inflate(R.layout.layout_gps_info, container, false);
         initView(view);
-        GpsInfoViewModel gpsInfoViewModel = ViewModelProviders.of(this).get(GpsInfoViewModel.class);
-        gpsInfoViewModel.getGpsInfo().observe(this, new Observer<GPSInfo>() {
-            @Override
-            public void onChanged(GPSInfo gpsInfo) {
-                if (gpsInfo != null) {
-                    MyLog.i(TAG, "gpsinfo=" + gpsInfo == null ? "null" : gpsInfo.toString());
-                    gpsinfos.clear();
-                    Field[] fields = gpsInfo.getClass().getDeclaredFields();
-                    for (int i = 0; i < fields.length; i++) {
-                        //璁剧疆鏄惁鍏佽璁块棶锛屼笉鏄慨鏀瑰師鏉ョ殑璁块棶鏉冮檺淇グ璇嶃��
-                        fields[i].setAccessible(true);
-                        try {
-                            if (fields[i].getName().equalsIgnoreCase("id")) {
-                                continue;
-                            }
-                            gpsinfos.add(fields[i].getName() + ":" + fields[i].get(gpsInfo));
-                        } catch (IllegalAccessException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    gpsInfoAdapter.addAll(gpsinfos);
-                }else{
-                    MyLog.i(TAG,"鏈娴嬪埌GPS鏁版嵁搴撲俊鎭�");
-                }
-
-            }
-        });
         return view;
     }
 
     private void initView(View view) {
+        Log.i(TAG,"currTopFragment="+getTopFragment().getClass().getSimpleName());
+        if (HomeFragment.class.getSimpleName().equals(getTopFragment().getClass().getSimpleName())){
+            ((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE);
+            ((MainActivity)_mActivity).btn_return.setVisibility(View.GONE);
+        }else{
+            ((MainActivity)_mActivity).viewtitle.setVisibility(View.VISIBLE);
+            ((MainActivity)_mActivity).btn_return.setVisibility(View.VISIBLE);
+            Log.i(TAG,"currTopFragment visible="+getTopFragment().getClass().getSimpleName());
+        }
         lv = view.findViewById(R.id.lv_gpsinfo);
-        gpsInfoAdapter = new GpsInfoAdapter(_mActivity);
+        gpsInfoAdapter = new BaseDataInfoAdapter(_mActivity);
         lv.setAdapter(gpsInfoAdapter);
+
+        lv.setDivider(new ColorDrawable(Color.parseColor("#2A344B")));
+        lv.setDividerHeight(1);
 
     }
 
+    @Override
+    public void onAttach(@NonNull Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true,icEventListener1, Constant.BIND_RTK_INFO_MAP);
+    }
+    private String lastRtkinfoStr = "";
+    private ICEventListener icEventListener1 = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            if (msgCode == Constant.RTK_INFO){
+                String str = (String)obj;
+
+                if (!str.equalsIgnoreCase(lastRtkinfoStr)){
+                    RTKInfoBean rtkInfoBean = gson.fromJson(str, RTKInfoBean.class);
+
+                    if (rtkInfoBean != null){
+                            Field[] fields = rtkInfoBean.getClass().getDeclaredFields();
+
+                            datas.clear();
+                        for (int i = 0; i < fields.length; i++) {
+                            fields[i].setAccessible(true);
+                            try {
+                                String fieldName= fields[i].getName();
+                                datas.add(new BaseDataUIBean(str2SpannableString(fieldName),R.mipmap.conn_status,str2FouregourdSpannableString(fields[i].get(rtkInfoBean)+""),"",1,null));
+                            } catch (IllegalAccessException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                        lv.post(()->{
+                            gpsInfoAdapter.addAll(datas);
+                        });
+
+                    }
+                }
+
+            }
+        }
+    };
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        CEventCenter.onBindEvent(false,icEventListener1,Constant.BIND_RTK_INFO_MAP);
+    }
+
+    private SpannableString str2SpannableString(String str) {
+        spannableString = new SpannableString(str);
+        spannableString.setSpan(new AbsoluteSizeSpan(22),0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#A8AAA7")),0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return spannableString;
+    }
+    private SpannableString str2FouregourdSpannableString(String s) {
+        spannableString = new SpannableString(s);
+        spannableString.setSpan(new AbsoluteSizeSpan(28),0,s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FFFFFF")),0,s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return spannableString;
+    }
 }

--
Gitblit v1.8.0