endian11
2020-09-16 cab2ea881e5711d16cf0003e8b00489a2c766365
dialog有多个项 可以选择
2个文件已修改
6个文件已添加
474 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/adapter/RouteSelectAdapter.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/RemoteRouteCollect.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/customview/SelectMutliDialog.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/route_item_select_bg.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_select_dlg_multi.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/route_select_item.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | 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>