app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/route_item_select_bg.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/layout_select_dlg_multi.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/route_select_item.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java
New file @@ -0,0 +1,86 @@ package safeluck.drive.evaluation.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; import safeluck.drive.evaluation.DB.route.RouteBean; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.SysExamSettingLargeMenu; import safeluck.drive.evaluation.listener.OnItemClickListener; /** * */ public class RouteSelectAdapter extends RecyclerView.Adapter<RouteSelectAdapter.MyViewHolder> { private List<RouteBean> mItems = new ArrayList<>(); private LayoutInflater mInflater; private OnItemClickListener mClickListener; private Context mContext; public RouteSelectAdapter(Context context) { this.mInflater = LayoutInflater.from(context); this.mContext = context; } public void setDatas(List<RouteBean> items) { mItems.clear(); mItems.addAll(items); notifyDataSetChanged(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.route_select_item, parent, false); final MyViewHolder holder = new MyViewHolder(view); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getAdapterPosition(); if (mClickListener != null) { mClickListener.onItemClick(position, v); } } }); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { RouteBean item = mItems.get(position); holder.tvTitle.setText(item.getRouteName()); holder.iv_delete.setOnClickListener((v)->{ mItems.remove(item); notifyDataSetChanged(); }); } @Override public int getItemCount() { return mItems.size(); } class MyViewHolder extends RecyclerView.ViewHolder { private TextView tvTitle; private ImageView iv_delete; public MyViewHolder(View itemView) { super(itemView); tvTitle = (TextView) itemView.findViewById(R.id.tv_title); iv_delete = (ImageView) itemView.findViewById(R.id.iv_delete); } } public void setOnItemClickListener(OnItemClickListener itemClickListener) { this.mClickListener = itemClickListener; } } app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java
New file @@ -0,0 +1,24 @@ package safeluck.drive.evaluation.bean; import java.util.List; /** * DriveJudge * Created by lzw on 2020/9/16. 18:14:09 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class RemoteRouteCollect { private List<RouteCollect> scheme; public List<RouteCollect> getScheme() { return scheme; } public void setScheme(List<RouteCollect> scheme) { this.scheme = scheme; } } app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java
New file @@ -0,0 +1,203 @@ package safeluck.drive.evaluation.customview; import android.app.Dialog; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import safeluck.drive.evaluation.DB.route.RouteBean; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.RouteSelectAdapter; import safeluck.drive.evaluation.adapter.SysSettingPagerAdapter; import safeluck.drive.evaluation.bean.SysExamSettingLargeMenu; import safeluck.drive.evaluation.fragment.BaseSettingFragment; import safeluck.drive.evaluation.fragment.shop.ShopFragment; import safeluck.drive.evaluation.listener.OnItemClickListener; /** * @ProjectName: DriveJudge * @Package: safeluck.drive.evaluation.customview * @ClassName: SelectDialog * @Description: java类作用描述 * @Author: 李占伟 * @CreateDate: 2020-04-23 15:03 * @UpdateUser: 更新者 * @UpdateDate: 2020-04-23 15:03 * @UpdateRemark: 更新说明 * @Version: 1.0 */ public class SelectMutliDialog extends DialogFragment implements View.OnClickListener { private static final String TAG = "SelectDialog"; private Button button; private RadioGroup rgb; public static final int SELECT_NONE = -1; private int result = SELECT_NONE; private ArrayList<String> stringArrayList; private RecyclerView mRecy; private RouteSelectAdapter mAdapter; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (getDialog() != null) { Window window = getDialog().getWindow(); if (window != null) { window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); getDialog().setOnShowListener(dialog -> { window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); hideBottomUIMenu(); }); } } View view = inflater.inflate(R.layout.layout_select_dlg_multi,container,false); Bundle bundle = getArguments(); if (bundle != null){ stringArrayList = bundle.getStringArrayList("content"); } initView(view); return view; } private void initView(View view) { mRecy = (RecyclerView) view.findViewById(R.id.recy); mAdapter = new RouteSelectAdapter(getActivity()); LinearLayoutManager manager = new LinearLayoutManager(getActivity()); mRecy.setLayoutManager(manager); mRecy.setAdapter(mAdapter); mAdapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(int position, View view) { Toast.makeText(getActivity(), position+"", Toast.LENGTH_SHORT).show(); if (onSelectedListener != null){ onSelectedListener.makeYourChoice(result); } dismiss(); } }); mRecy.post(new Runnable() { @Override public void run() { // Init Datas ArrayList<String> menues = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.array_large_item_menu))); List<RouteBean> items = new ArrayList<>(); for (int i = 0; i < menues.size(); i++) { RouteBean item = new RouteBean(); item.setRouteName(menues.get(i)); item.setId(i); items.add(item); } mAdapter.setDatas(items); } }); // button = view.findViewById(R.id.btn_sure_); // button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_sure_: if (onSelectedListener != null){ onSelectedListener.makeYourChoice(result); } dismiss(); break; } } public interface OnSelectedListener{ void makeYourChoice(int res); } private OnSelectedListener onSelectedListener; public void setSelectedListener(OnSelectedListener onSelectedListener){ this.onSelectedListener = onSelectedListener; } @Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null){ DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int width = (int)(dm.widthPixels*0.5); dialog.getWindow().setLayout(width,ViewGroup.LayoutParams.WRAP_CONTENT); } } public static SelectMutliDialog newInstance(String... args){ SelectMutliDialog sle = new SelectMutliDialog(); if (args != null && args.length>=2){ List<String> strs = Arrays.asList(args); ArrayList<String> list = new ArrayList<>(strs); Bundle bundle = new Bundle(); bundle.putStringArrayList("content",list); sle.setArguments(bundle); } return sle; } /** * 隐藏虚拟按键,并且全屏 */ protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api View v = this.getDialog().getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Build.VERSION.SDK_INT >= 19) { //for new api versions. View decorView = getDialog().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); } } @Override public void dismiss() { super.dismiss(); } } app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
@@ -63,6 +63,8 @@ } }); mRecy.post(new Runnable() { @Override public void run() { app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -39,6 +39,7 @@ import com.anyun.basecommonlib.MyLog; import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -57,13 +58,18 @@ import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel; import safeluck.drive.evaluation.DB.failitems.FailedProjViewModel; import safeluck.drive.evaluation.DB.failitems.FailedProj_select; import safeluck.drive.evaluation.DB.route.RouteBean; import safeluck.drive.evaluation.DB.route.RouteCross; import safeluck.drive.evaluation.DB.route.RouteLineViewModel; import safeluck.drive.evaluation.DB.route.RouteTriggerLine; import safeluck.drive.evaluation.MainActivity; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.ScoreAdapter; import safeluck.drive.evaluation.bean.BaseDataUIBean; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.MapInfoHead; import safeluck.drive.evaluation.bean.RemoteRouteCollect; import safeluck.drive.evaluation.bean.RouteCollect; import safeluck.drive.evaluation.bean.ScoreBean; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; @@ -72,6 +78,7 @@ import safeluck.drive.evaluation.customview.QRCodeDialog; import safeluck.drive.evaluation.customview.SelectDialog; import safeluck.drive.evaluation.customview.SelectDialogThree; import safeluck.drive.evaluation.customview.SelectMutliDialog; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.platformMessage.JKMessage0201; import safeluck.drive.evaluation.platformMessage.JKMessage0202; @@ -106,6 +113,7 @@ private Button av_zhijiao, av_curve, av_park, av_podao; private Button houseView; private RouteLineViewModel routeLineViewModel; private List<RouteBean> mRouteBeans = new ArrayList<>(); private List<ExamStatus> examStatusList = new ArrayList<>(); private List<String> item_conents = new ArrayList<>();//坡道定点停车和起步 @@ -372,6 +380,15 @@ failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class); routeLineViewModel = ViewModelProviders.of(this).get(RouteLineViewModel.class); routeLineViewModel.getRouteBeans().observe(this, new Observer<List<RouteBean>>() { @Override public void onChanged(List<RouteBean> routeBeans) { if (routeBeans.size()>0){ mRouteBeans.clear(); mRouteBeans.addAll(routeBeans); } } }); failedProjViewModel.getFailedProjectsForIII(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() { @Override @@ -628,8 +645,60 @@ selectDialog.show(getFragmentManager(),"selectdialog"); }else{ if (exam_type == ROUTE_COLLECT){ List<RouteCollect.CrossingActiveBean> crossingActiveBeans = new ArrayList<>(); List<RouteCollect.TriggerLineBean> triggerLineBeans = new ArrayList<>(); List<Double> xy = new ArrayList<>(); RemoteRouteCollect remoteRouteCollect = new RemoteRouteCollect(); RouteCollect routeCollect = new RouteCollect(); List<RouteCollect> routeCollects = new ArrayList<>(); Toast.makeText(_mActivity, "结束采集", Toast.LENGTH_SHORT).show(); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { for (RouteBean routeBean:mRouteBeans){ int id = routeBean.getId(); routeCollect.setName(routeBean.getRouteName()); List<RouteTriggerLine> routeTriggerLines = WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getRouteTriggerLineDao().getAllRouteTriggerLine(id); List<RouteCross> routeCrosses = WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getRouteCrooDao().getAllRouteCross(id); for (RouteTriggerLine line:routeTriggerLines){ RouteCollect.TriggerLineBean triggerLineBean = new RouteCollect.TriggerLineBean(); int road = line.getRoad(); int type = line.getType(); double x = line.getX(); double y = line.getY(); xy.clear(); xy.add(x); xy.add(y); triggerLineBean.setRoad(road); triggerLineBean.setType(type); triggerLineBean.setX_y(xy); triggerLineBeans.add(triggerLineBean); } routeCollect.setTrigger_line(triggerLineBeans); for (RouteCross routeCross:routeCrosses){ int idx = routeCross.getIdx(); int road = routeCross.getRoad(); int active = routeCross.getActive(); RouteCollect.CrossingActiveBean crossingActiveBean = new RouteCollect.CrossingActiveBean(); crossingActiveBean.setActive(active); crossingActiveBean.setIdx(idx); crossingActiveBean.setRoad(road); crossingActiveBeans.add(crossingActiveBean); } routeCollect.setCrossing_active(crossingActiveBeans); routeCollects.add(routeCollect); } remoteRouteCollect.setScheme(routeCollects); String str = new Gson().toJson(remoteRouteCollect); Log.i(TAG,"json====="+str); } }); ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); exam_type = 0; examStatusViewModel.updateStartExam(exam_type); @@ -654,21 +723,9 @@ // startArcGisMapFragment(url); // StatusDialog.with(_mActivity).setCancelable(true).setPrompt("加载中,请稍后...").setType(StatusDialog.Type.PROGRESS).show(); MyInputDialog myDialog = MyInputDialog.Companion.newInstance("您将退出系统,请确认数据已保存"); SelectMutliDialog myDialog = SelectMutliDialog.newInstance("您将退出系统,请确认数据已保存"); myDialog.setOnClick(new MyInputDialog.MyOnClickListener() { @Override public void onSure(String string) { Log.i(TAG,"收到的:"+string); } @Override public void onCancle() { } }); myDialog.show(getFragmentManager(),"mydialog"); break; app/src/main/res/drawable/route_item_select_bg.xml
New file @@ -0,0 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/bg_item_select"></item> </selector> app/src/main/res/layout/layout_select_dlg_multi.xml
New file @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="260dp" android:layout_height="360dp" android:gravity="center" android:background="@drawable/bg_select_dlg" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="@dimen/network_train_textsize20px" android:textColor="@android:color/white" android:padding="@dimen/ui_margin_10dp" android:background="@drawable/bg_select_dlg" android:text="请选择一个项目:"/> <LinearLayout android:layout_width="match_parent" android:id="@+id/radiogroub" android:layout_marginRight="@dimen/ui_margin_10dp" android:layout_height="300dp"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recy" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> </LinearLayout> app/src/main/res/layout/route_select_item.xml
New file @@ -0,0 +1,39 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="66dp" android:gravity="center_vertical" android:orientation="horizontal" android:paddingLeft="16dp" android:background="@drawable/route_item_select_bg" android:paddingRight="16dp"> <CheckBox android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/tv_title" /> <TextView android:id="@+id/tv_title" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:textColor="@android:color/white" android:text="sdf" android:padding="@dimen/ui_margin_5dp" android:textSize="17sp"/> <!-- <View android:layout_width="match_parent" android:layout_height="0.2dp" android:layout_alignParentBottom="true" android:background="#c9c9c9"/>--> <ImageView android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_toRightOf="@+id/tv_title" android:background="@color/color_0ab0ef" android:id="@+id/iv_delete" android:src="@drawable/ic_arrow_back_white_24dp"/> </LinearLayout>