修改criteria_I.json文件某个字段使之Gson不报错;点开TrainFragment的时候开始加载数据库(onCreate插入数据)
6个文件已修改
173 ■■■■■ 已修改文件
app/src/main/assets/criteria_I.json 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriasRepository.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/viewmodel/CriteriaIViewModel.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/criteria_I.json
@@ -32,21 +32,21 @@
    "item_content": "通用要求",
    "deducting_reason": "因操作不当造成发动机熄火一次",
    "score_deducting":10,
    "required_precision":"5"
    "required_precision":""
  },
  {
    "item_id":6,
    "item_content": "倒车入库",
    "deducting_reason": "不按规定路线、顺序行驶",
    "score_deducting":100,
    "required_precision":"5"
    "required_precision":""
  },
  {
    "item_id":7,
    "item_content": "倒车入库",
    "deducting_reason": "车身出线",
    "score_deducting":100,
    "required_precision":"5"
    "required_precision":""
  },
  {
    "item_id":8,
@@ -60,7 +60,7 @@
    "item_content": "倒车入库",
    "deducting_reason": "在倒车前,未将两个前轮触地点均驶过控制线",
    "score_deducting":100,
    "required_precision":""
    "required_precision": ""
  },
  {
    "item_id":10,
@@ -74,14 +74,14 @@
    "item_content": "倒车入库",
    "deducting_reason": "中途停车时间超过2s",
    "score_deducting":100,
    "score_deducting":""
    "required_precision":""
  },
  {
    "item_id":12,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后超出50cm",
    "score_deducting":100,
    "required_precision":"df"
    "required_precision":""
  },
  {
    "item_id":13,
@@ -95,108 +95,125 @@
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "车辆停止后,车身距离路边缘线超出50cm",
    "score_deducting":100,
    "required_precision":"5"
  } , {
    "required_precision":""
  } ,
  {
    "item_id":15,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "车辆停止后,起步时间超过30s",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":16,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "起步时车辆后溜距离大于30cm",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":17,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后不超出50cm",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":18,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "车辆停止后,车身距离路边缘线超出30cm,未超出50cm",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":19,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "停车后未拉紧驻车制动器",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":20,
    "item_content": "坡道定点停车和起步",
    "deducting_reason": "起步时车辆后溜距离10cm~30cm",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":21,
    "item_content": "侧方停车",
    "deducting_reason": "车辆入库停止后,车身出线",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":22,
    "item_content": "侧方停车",
    "deducting_reason": "项目完成时间超过90s",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":23,
    "item_content": "侧方停车",
    "deducting_reason": "行驶中车轮触轧车道边线",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":24,
    "item_content": "侧方停车",
    "deducting_reason": "行驶中车身触碰库位边线",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":25,
    "item_content": "侧方停车",
    "deducting_reason": "出库时不使用或错误使用转向灯",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":26,
    "item_content": "侧方停车",
    "deducting_reason": "中途停车时间超过2s",
    "score_deducting":5,
    "required_precision":"trew"
  }, {
    "required_precision":""
  },
  {
    "item_id":27,
    "item_content": "曲线行驶",
    "deducting_reason": "车轮轧道路边缘线",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":28,
    "item_content": "曲线行驶",
    "deducting_reason": "中途停车时间超过2s",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":29,
    "item_content": "直线转弯",
    "deducting_reason": "车轮轧道路边缘线",
    "score_deducting":100,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":30,
    "item_content": "直线转弯",
    "deducting_reason": "转弯时不使用或错误使用转向灯,转完后不关闭转向灯",
    "score_deducting":10,
    "required_precision":"5"
  }, {
    "required_precision":""
  },
  {
    "item_id":31,
    "item_content": "直线转弯",
    "deducting_reason": "中途停车时间超过2s",
    "score_deducting":5,
    "required_precision":"5"
    "required_precision":""
  }
]
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -37,9 +37,11 @@
    public static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
     public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){
         Log.i(TAG, "getWorkRoomDataBase");
        if (workRoomDataBase == null){
            synchronized (WorkRoomDataBase.class){
                if (workRoomDataBase == null){
                    Log.i(TAG, "getWorkRoomDataBase==null ");
                    workRoomDataBase = Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database")
                            .addCallback(new Callback() {
                                @Override
@@ -51,6 +53,12 @@
                                    WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest);
                                    WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1);
                                }
                                @Override
                                public void onOpen(@NonNull SupportSQLiteDatabase db) {
                                    super.onOpen(db);
                                    Log.i(TAG, "onOpen: ");
                                }
                            })
                            .build();
                }
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriasRepository.java
@@ -1,6 +1,7 @@
package safeluck.drive.evaluation.DB.criterias;
import android.app.Application;
import android.util.Log;
import androidx.lifecycle.LiveData;
@@ -16,6 +17,7 @@
 */
public class CriteriasRepository {
    private static final String TAG = "CriteriasRepository";
    CriteriaIDao mCriteriaIDao;
@@ -54,6 +56,8 @@
     * @param application
     */
    public CriteriasRepository(Application application) {
        this.mCriteriaIDao = WorkRoomDataBase.getWorkRoomDataBase(application).getCriteriaIDao();
        Log.i(TAG, "CriteriasRepository: ");
        WorkRoomDataBase db =WorkRoomDataBase.getWorkRoomDataBase(application);
        this.mCriteriaIDao = db.getCriteriaIDao();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/viewmodel/CriteriaIViewModel.java
@@ -1,6 +1,7 @@
package safeluck.drive.evaluation.DB.criterias.viewmodel;
import android.app.Application;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
@@ -19,17 +20,20 @@
 */
public class CriteriaIViewModel extends AndroidViewModel {
    private static final String TAG = "CriteriaIViewModel";
    CriteriasRepository mCriteriasRep;
    LiveData<CriteriaForI> criteriaI;
    public CriteriaIViewModel(@NonNull Application application) {
        super(application);
        Log.i(TAG, "CriteriaIViewModel Constructor ");
        mCriteriasRep = new CriteriasRepository(application);
    }
    public LiveData<CriteriaForI> getItemForCriteriaI(int item_id){
        criteriaI = mCriteriasRep.queryItemForCriteriaI(item_id);
        return criteriaI;
    public LiveData<CriteriaForI> queryCriteriaI(int item_id){
        return mCriteriasRep.queryItemForCriteriaI(item_id);
    }
    public void insertCriteriaIs(List<CriteriaForI> cs){
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -23,6 +23,8 @@
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WokViewModel;
import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.tcp.ConnectThread;
@@ -35,13 +37,15 @@
public class TcpFragment extends SupportFragment implements View.OnClickListener {
    private static final String TAG = TcpFragment.class.getSimpleName();
    private TextInputEditText ip;
    private TextInputEditText port;
    private Button btn_connect;
    private Button btn_send;
    private      ConnectThread connectThread;
    private AppCompatEditText sendEditText;
    private         WokViewModel workViewModel;
    private CriteriaIViewModel workViewModel;
    private int item_id=0;
    public static TcpFragment newInstance() {
        return new TcpFragment();
@@ -52,16 +56,9 @@
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_tcpclient, container, false);
        initView(view);
        workViewModel =ViewModelProviders.of(this).get(WokViewModel.class);
        workViewModel =ViewModelProviders.of(this).get(CriteriaIViewModel.class);
        workViewModel.getStudents().observe((LifecycleOwner) this, new Observer<List<Student>>() {
            @Override
            public void onChanged(List<Student> students) {
                for (Student student:students){
                    Log.i("Students", "onChanged: "+student.toString());
                }
            }
        });
        return view;
    }
@@ -92,8 +89,17 @@
////                    connectThread.sendMessage(sendEditText.getText().toString().trim());
////                    sendEditText.getText().clear();
////                }
                workViewModel.insertStudent(new Student(1002,"王五","500107198910124566",1));
                checkCriteria(++item_id);
                break;
        }
    }
    private void checkCriteria(int item_id) {
        workViewModel.queryCriteriaI(item_id).observe(TcpFragment.this, new Observer<CriteriaForI>() {
            @Override
            public void onChanged(CriteriaForI criteriaForI) {
                Log.i(TAG, "onChanged: "+criteriaForI.toString());
            }
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -4,6 +4,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -13,6 +17,8 @@
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WokViewModel;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.ScoreAdapter;
import safeluck.drive.evaluation.bean.ScoreBean;
@@ -24,6 +30,8 @@
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class TrainFragment extends SupportFragment implements View.OnClickListener {
    private static final String TAG = TrainFragment.class.getSimpleName();
    private ListView mListView ;
    private ScoreAdapter mScoreAdapter;
@@ -39,6 +47,18 @@
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
        initView(view);
        WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class);
        wokViewModel.getStudents().observe(this, new Observer<List<Student>>() {
            @Override
            public void onChanged(List<Student> students) {
                for (Student student:
                     students) {
                    Log.i(TAG, "onChanged: "+student.toString());
                }
            }
        });
        return view;
    }
    private void initView(View view) {