From cab2ea881e5711d16cf0003e8b00489a2c766365 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期三, 16 九月 2020 19:28:22 +0800
Subject: [PATCH] dialog有多个项 可以选择
---
app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java | 24 +++
app/src/main/res/layout/route_select_item.xml | 39 ++++
app/src/main/res/layout/layout_select_dlg_multi.xml | 33 ++++
app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java | 86 ++++++++++
app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java | 2
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 83 ++++++++-
app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java | 203 +++++++++++++++++++++++++
app/src/main/res/drawable/route_item_select_bg.xml | 4
8 files changed, 461 insertions(+), 13 deletions(-)
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java
new file mode 100644
index 0000000..bf4ec9c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java
@@ -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;
+ }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java b/app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java
new file mode 100644
index 0000000..0542b50
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java
@@ -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;
+ }
+
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java b/app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java
new file mode 100644
index 0000000..d78d502
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java
@@ -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();
+ }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
index 9a046c7..47f7d04 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
@@ -63,6 +63,8 @@
}
});
+
+
mRecy.post(new Runnable() {
@Override
public void run() {
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index 4e9853f..700c286 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/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;
diff --git a/app/src/main/res/drawable/route_item_select_bg.xml b/app/src/main/res/drawable/route_item_select_bg.xml
new file mode 100644
index 0000000..2874ca9
--- /dev/null
+++ b/app/src/main/res/drawable/route_item_select_bg.xml
@@ -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>
diff --git a/app/src/main/res/layout/layout_select_dlg_multi.xml b/app/src/main/res/layout/layout_select_dlg_multi.xml
new file mode 100644
index 0000000..64862c7
--- /dev/null
+++ b/app/src/main/res/layout/layout_select_dlg_multi.xml
@@ -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>
\ No newline at end of file
diff --git a/app/src/main/res/layout/route_select_item.xml b/app/src/main/res/layout/route_select_item.xml
new file mode 100644
index 0000000..d7f8ae2
--- /dev/null
+++ b/app/src/main/res/layout/route_select_item.xml
@@ -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>
\ No newline at end of file
--
Gitblit v1.8.0