Pārlūkot izejas kodu

1.新增MSDS检索功能

JaycePC 3 nedēļas atpakaļ
vecāks
revīzija
b9ab4c6075

+ 6 - 0
app/src/main/java/http/client/ApiRepository.kt

@@ -203,6 +203,12 @@ object ApiRepository {
     fun hazardBookList(): Observable<List<HazardBook>> {
     fun hazardBookList(): Observable<List<HazardBook>> {
         return mLibClient.hazardBookList().schedulers()
         return mLibClient.hazardBookList().schedulers()
     }
     }
+    /**
+     * 一体机查询危化品
+     */
+    fun hazardBookList(id:String): Observable<List<HazardBook>> {
+        return mLibClient.hazardBookList(id).schedulers()
+    }
 
 
     /**
     /**
      * 获取危化品安全技术说明书详细信息
      * 获取危化品安全技术说明书详细信息

+ 6 - 0
app/src/main/java/http/client/retrofit/ApiService.java

@@ -204,6 +204,12 @@ public interface ApiService {
     Observable<CommonDataResponse<RecordsResponse<HazardBook>>> hazardBookList();
     Observable<CommonDataResponse<RecordsResponse<HazardBook>>> hazardBookList();
 
 
     /**
     /**
+     * ZD-A024: 一体机查询危化品
+     */
+    @GET("chemical/aio/msds")
+    Observable<CommonDataResponse<RecordsResponse<HazardBook>>> hazardBookList(@Query("searchValue") String id);
+
+    /**
      * ZD-A025: 获取危化品安全技术说明书详细信息
      * ZD-A025: 获取危化品安全技术说明书详细信息
      */
      */
     @GET("chemical/aio/msdsDetails")
     @GET("chemical/aio/msdsDetails")

+ 7 - 0
app/src/main/java/http/client/retrofit/LabRetrofit.kt

@@ -277,6 +277,13 @@ open class LabRetrofit : LabClient {
         return apiService.hazardBookList()
         return apiService.hazardBookList()
             .map(this::recordsConvert)
             .map(this::recordsConvert)
     }
     }
+    /**
+     * 一体机查询危化品 查询
+     */
+     fun hazardBookList(id:String): Observable<List<HazardBook>> {
+        return apiService.hazardBookList(id)
+            .map(this::recordsConvert)
+    }
 
 
     /**
     /**
      * 获取危化品安全技术说明书详细信息
      * 获取危化品安全技术说明书详细信息

+ 347 - 0
app/src/main/java/xn/xxp/main/msds/InstructionActivity.java

@@ -0,0 +1,347 @@
+package xn.xxp.main.msds;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.blankj.utilcode.util.ClickUtils;
+import com.blankj.utilcode.util.LogUtils;
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+
+import core.ui.activity.BaseCountDownActivity;
+import core.util.EscapeUnescape;
+import core.util.WebViewHelper;
+import http.client.ApiRepository;
+import http.vo.response.HazardBook;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.functions.Consumer;
+import xn.xxp.R;
+import xn.xxp.databinding.ActivityInstructionBinding;
+import xn.xxp.utils.QrTool;
+import xn.xxp.widget.ITitleBar;
+import xn.xxp.widget.NavViewCompat;
+import xn.xxp.widget.SelectHazardBookDialog;
+
+public class InstructionActivity extends BaseCountDownActivity<ActivityInstructionBinding> {
+
+    private InstructionAdapter mInstructionAdapter;
+    private HazardBook mCurrentData;
+
+    @Override
+    public ITitleBar getMTitleBar() {
+        return binding.titleBar;
+    }
+
+    @Override
+    public NavViewCompat getMNavView() {
+        return binding.navView;
+    }
+
+    @Override
+    public ActivityInstructionBinding createViewBinding() {
+        return ActivityInstructionBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    public void initViews(Bundle savedInstanceState) {
+        super.initViews(savedInstanceState);
+        WebViewHelper webViewHelper = new WebViewHelper(binding.webView, binding.progressbar);
+        webViewHelper.initWebView(null, null);
+    }
+
+    @Override
+    public void initData() {
+        mInstructionAdapter = new InstructionAdapter();
+
+        mInstructionAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                HazardBook item = (HazardBook) adapter.getItem(position);
+                mInstructionAdapter.setSelectedItemId(item.id);
+                mInstructionAdapter.notifyDataSetChanged();
+                showHazardBookDetail(item.id);
+            }
+        });
+
+        binding.sdms.setLayoutManager(new LinearLayoutManager(this));
+        binding.sdms.setAdapter(mInstructionAdapter);
+
+        showLoading("加载中...");
+        Disposable disposable = ApiRepository.INSTANCE.hazardBookList()
+                .subscribe(data -> {
+                    dismissLoading();
+                    mInstructionAdapter.setList(data != null ? new ArrayList<>(data) : Collections.emptyList());
+                    if (data == null || data.isEmpty()) {
+                        mInstructionAdapter.setEmptyView(R.layout.view_list_empty);
+                    } else {
+                        mInstructionAdapter.setSelectedItemId(data.get(0).id);
+                        showHazardBookDetail(data.get(0).id);
+                    }
+                }, throwable -> {
+                    dismissLoading();
+                    showNetError(throwable);
+                    throwable.printStackTrace();
+                    mInstructionAdapter.setEmptyView(R.layout.view_list_empty);
+                });
+        addDisposable(disposable);
+        binding.search.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                Editable searchETText = binding.searchET.getText();
+                if (TextUtils.isEmpty(searchETText)) {
+                    showToast("请输入MSDS!");
+                    return;
+                }
+                showLoading("查询中...");
+                addDisposable(ApiRepository.INSTANCE.hazardBookList(searchETText.toString()).subscribe(new Consumer<List<HazardBook>>() {
+                    @Override
+                    public void accept(List<HazardBook> hazardBooks) throws Throwable {
+                        dismissLoading();
+                        new SelectHazardBookDialog(InstructionActivity.this, "请选择", hazardBooks, new SelectHazardBookDialog.SelectedListener() {
+                            @Override
+                            public void selected(HazardBook hazardBook) {
+                                mInstructionAdapter.setSelectedItemId(hazardBook.id);
+                                mInstructionAdapter.notifyDataSetChanged();
+                                showHazardBookDetail(hazardBook.id);
+                            }
+
+                        }).show();
+                    }
+                }, new Consumer<Throwable>() {
+                    @Override
+                    public void accept(Throwable throwable) throws Throwable {
+                        LogUtils.e(Log.getStackTraceString(throwable));
+                        dismissLoading();
+                        showNetError(throwable);
+                    }
+                }));
+            }
+        });
+    }
+
+    private void showHazardBookDetail(String id) {
+        if (id == null) return;
+        showLoading("查询中...");
+        Disposable disposable = ApiRepository.INSTANCE.hazardBookDetail(id)
+                .subscribe(data -> {
+                    dismissLoading();
+                    refreshDetailUI(data);
+                }, throwable -> {
+                    dismissLoading();
+                    showNetError(throwable);
+                    throwable.printStackTrace();
+                });
+        addDisposable(disposable);
+    }
+
+    private void refreshDetailUI(HazardBook data) {
+        mCurrentData = data;
+        if (data != null) {
+            // 文件内容
+            if (data.content != null && !data.content.isEmpty()) {
+                StringBuilder html = new StringBuilder();
+                html.append("<HTML><HEAD></HEAD><body>");
+                html.append(EscapeUnescape.unescape(data.content));
+                html.append("</body></HTML>");
+
+                binding.webView.loadDataWithBaseURL(
+                        "file:///android_asset/",
+                        html.toString(),
+                        "text/html",
+                        "utf-8",
+                        null
+                );
+            }
+
+            // 二维码处理
+            new Thread(() -> {
+                try {
+                    final android.graphics.Bitmap bitmap = QrTool.generateQRCode(data.qrCodeUrl, 150);
+                    runOnUiThread(() -> {
+                        Glide.with(this)
+                                .asBitmap()
+                                .load(bitmap)
+                                .error(R.mipmap.img_error)
+                                .into(binding.qrCode);
+                    });
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }).start();
+        }
+    }
+
+    @Override
+    public void initListener() {
+        binding.fullScreen.setOnClickListener(v -> {
+            if (mCurrentData != null) {
+                Intent intent = new Intent(this, HtmlFullScreenActivity.class);
+                intent.putExtra("html_content", mCurrentData.content);
+                intent.putExtra("onEboard", onEboard());
+                intent.putExtra("name", mCurrentData.name);
+                startActivity(intent);
+            }
+        });
+    }
+
+    protected boolean onEboard() {
+        return true;
+    }
+
+    @Override
+    public boolean enabledBackCountDown() {
+        return true;
+    }
+}
+
+class InstructionAdapter extends BaseQuickAdapter<HazardBook, BaseViewHolder> {
+
+    private String selectedItemId;
+
+    public InstructionAdapter() {
+        super(R.layout.item_instruction);
+    }
+
+    public void setSelectedItemId(String selectedItemId) {
+        this.selectedItemId = selectedItemId;
+    }
+
+    @Override
+    protected void convert(BaseViewHolder holder, HazardBook item) {
+        TextView textView = (TextView) holder.itemView;
+        textView.setText((item.code != null ? item.code : "") + " " + (item.name != null ? item.name : ""));
+
+        int backgroundRes = (selectedItemId != null && selectedItemId.equals(item.id))
+                ? R.drawable.bg_item_checked
+                : R.drawable.bg_item_normal;
+
+        textView.setBackgroundResource(backgroundRes);
+    }
+}
+
+class AutoCompleteAdapter extends BaseAdapter implements Filterable {
+
+    private List<HazardBook> originalData;
+    private List<HazardBook> visibilityData;
+    private final Object mLock = new Object();
+    private Filter mFilter;
+
+    public AutoCompleteAdapter(List<HazardBook> data) {
+        originalData = data != null ? new ArrayList<>(data) : new ArrayList<>();
+        visibilityData = new ArrayList<>(originalData);
+    }
+
+    @Override
+    public int getCount() {
+        return visibilityData.size();
+    }
+
+    @Override
+    public HazardBook getItem(int position) {
+        return visibilityData.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder holder;
+        if (convertView == null) {
+            convertView = LayoutInflater.from(parent.getContext())
+                    .inflate(R.layout.item_auto_complete_drop_down, parent, false);
+            holder = new ViewHolder(convertView.findViewById(R.id.text1));
+            convertView.setTag(holder);
+        } else {
+            holder = (ViewHolder) convertView.getTag();
+        }
+
+        holder.item.setText(getItem(position).name);
+        return convertView;
+    }
+
+    @Override
+    public Filter getFilter() {
+        if (mFilter == null) {
+            mFilter = new InstructionFilter();
+        }
+        return mFilter;
+    }
+
+    private static class ViewHolder {
+        TextView item;
+
+        ViewHolder(TextView item) {
+            this.item = item;
+        }
+    }
+
+    private class InstructionFilter extends Filter {
+
+        @Override
+        protected FilterResults performFiltering(CharSequence prefix) {
+            FilterResults results = new FilterResults();
+
+            if (prefix == null || prefix.length() == 0) {
+                synchronized (mLock) {
+                    results.values = new ArrayList<>(originalData);
+                    results.count = originalData.size();
+                }
+            } else {
+                String filterString = prefix.toString().toLowerCase(Locale.getDefault());
+                List<HazardBook> filteredList = new ArrayList<>();
+
+                for (HazardBook item : originalData) {
+                    String name = item.name != null ? item.name.toLowerCase(Locale.getDefault()) : "";
+                    String pinYinChar = item.pinYinChar != null ? item.pinYinChar.toLowerCase(Locale.getDefault()) : "";
+
+                    if (name.contains(filterString) || pinYinChar.contains(filterString)) {
+                        filteredList.add(item);
+                    }
+                }
+
+                results.values = filteredList;
+                results.count = filteredList.size();
+            }
+            return results;
+        }
+
+        @Override
+        protected void publishResults(CharSequence constraint, FilterResults results) {
+            visibilityData.clear();
+
+            if (results.values != null) {
+                visibilityData.addAll((List<HazardBook>) results.values);
+            }
+
+            if (results.count > 0) {
+                notifyDataSetChanged();
+            } else {
+                notifyDataSetInvalidated();
+            }
+        }
+    }
+}

+ 0 - 271
app/src/main/java/xn/xxp/main/msds/InstructionActivity.kt

@@ -1,271 +0,0 @@
-package xn.xxp.main.msds
-
-import android.content.Intent
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.*
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.bumptech.glide.Glide
-import com.chad.library.adapter.base.BaseQuickAdapter
-import com.chad.library.adapter.base.viewholder.BaseViewHolder
-import core.ui.activity.BaseCountDownActivity
-import core.util.EscapeUnescape
-import core.util.WebViewHelper
-import http.client.ApiRepository
-import http.vo.response.HazardBook
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import xn.xxp.R
-import xn.xxp.databinding.ActivityInstructionBinding
-import xn.xxp.utils.QrTool
-import xn.xxp.widget.ITitleBar
-import xn.xxp.widget.NavViewCompat
-import java.util.Locale
-
-/**
- * MSDS
- *
- * @author ReiChin_
- */
-open class InstructionActivity :
-    BaseCountDownActivity<ActivityInstructionBinding>() {
-    override fun getMTitleBar(): ITitleBar {
-        return binding.titleBar
-    }
-
-    override fun getMNavView(): NavViewCompat {
-        return binding.navView
-    }
-
-    override fun createViewBinding() = ActivityInstructionBinding.inflate(layoutInflater)
-
-
-    private val mInstructionAdapter by lazy { InstructionAdapter() }
-
-    private var mCurrentData: HazardBook? = null
-
-    override fun initViews(savedInstanceState: Bundle?) {
-        super.initViews(savedInstanceState)
-        val webViewHelper = WebViewHelper(binding.webView, binding.progressbar)
-        webViewHelper.initWebView()
-    }
-
-    override fun initData() {
-        mInstructionAdapter.setOnItemClickListener { _, _, position ->
-            val item = mInstructionAdapter.getItem(position)
-            mInstructionAdapter.selectedItemId = item.id
-            mInstructionAdapter.notifyDataSetChanged()
-            showHazardBookDetail(item.id)
-//            refreshDetailUI(item)
-        }
-        binding.sdms.layoutManager = LinearLayoutManager(this)
-        binding.sdms.adapter = mInstructionAdapter
-
-        showLoading("加载中...")
-        val disposable = ApiRepository.hazardBookList()
-            .subscribe({ data ->
-                dismissLoading()
-                mInstructionAdapter.setNewInstance(data?.toMutableList())
-                if (data.isNullOrEmpty()) {
-                    mInstructionAdapter.setEmptyView(R.layout.view_list_empty)
-                } else {
-                    // 默认显示第0条数据
-                    mInstructionAdapter.selectedItemId = data[0].id
-                    showHazardBookDetail(data[0].id)
-//                    refreshDetailUI(data[0])
-
-                    // 处理AutoCompleteTextView
-                    val adapter = AutoCompleteAdapter(data.toMutableList())
-                    binding.sdmsInput.setAdapter(adapter)
-                    binding.sdmsInput.setOnItemClickListener { _, _, position, _ ->
-                        val item = adapter.visibilityData[position]
-                        // TODO ReiChin_ 移动RecycleView的位置
-                        mInstructionAdapter.selectedItemId = item.id
-                        mInstructionAdapter.notifyDataSetChanged()
-                        showHazardBookDetail(item.id)
-//                        refreshDetailUI(item)
-                    }
-                }
-            }, { throwable ->
-                dismissLoading()
-                showNetError(throwable)
-                throwable.printStackTrace()
-                mInstructionAdapter.setEmptyView(R.layout.view_list_empty)
-            })
-        addDisposable(disposable)
-    }
-
-    private fun showHazardBookDetail(id: String?) {
-        showLoading("查询中...")
-        val disposable = ApiRepository.hazardBookDetail(id ?: "")
-            .subscribe({ data ->
-                dismissLoading()
-                refreshDetailUI(data)
-            }, { throwable ->
-                dismissLoading()
-                showNetError(throwable)
-                throwable.printStackTrace()
-            })
-        addDisposable(disposable)
-    }
-
-    private fun refreshDetailUI(data: HazardBook?) {
-        mCurrentData = data
-        data?.let {
-            // 文件内容
-            if (!data.content.isNullOrEmpty()) {
-                val html = StringBuilder()
-                html.append("<HTML><HEAD></HEAD><body>")
-                html.append(EscapeUnescape.unescape(data.content))
-                html.append("</body></HTML>")
-
-                binding.webView.loadDataWithBaseURL(
-                    "file:///android_asset/",
-                    html.toString(),
-                    "text/html",
-                    "utf-8",
-                    null
-                )
-            }
-
-            // 二维码
-            GlobalScope.launch(Dispatchers.Main) {
-                val bitmap = withContext(Dispatchers.IO) {
-                    QrTool.generateQRCode(data.qrCodeUrl, 150)
-                }
-                Glide.with(this@InstructionActivity)
-                    .asBitmap()
-                    .load(bitmap)
-                    .error(R.mipmap.img_error)
-                    .into(binding.qrCode)
-            }
-        }
-    }
-
-    override fun initListener() {
-        binding.fullScreen.setOnClickListener {
-            // 全屏
-            mCurrentData?.let { data ->
-                // 进入全屏画面
-                val intent = Intent(this, HtmlFullScreenActivity::class.java).apply {
-                    putExtra("html_content", data.content)
-                    putExtra("onEboard", onEboard())
-                    putExtra("name", data.name)
-                }
-                startActivity(intent)
-            }
-        }
-    }
-
-    protected open fun onEboard() = true
-
-    override fun enabledBackCountDown() = true
-
-}
-
-private class InstructionAdapter :
-    BaseQuickAdapter<HazardBook, BaseViewHolder>(R.layout.item_instruction) {
-
-    var selectedItemId: String? = null
-
-    override fun convert(holder: BaseViewHolder, item: HazardBook) {
-        val textView = (holder.itemView as TextView)
-        textView.text = "${item.code ?: ""} ${item.name ?: ""}"
-        textView.setBackgroundResource(
-            if (selectedItemId == item.id)
-                R.drawable.bg_item_checked else R.drawable.bg_item_normal
-        )
-    }
-
-}
-
-private class AutoCompleteAdapter(data: MutableList<HazardBook>? = null) :
-    BaseAdapter(), Filterable {
-
-    private var originalData: MutableList<HazardBook> = data ?: arrayListOf()
-
-    var visibilityData: MutableList<HazardBook>
-
-    init {
-        visibilityData = mutableListOf<HazardBook>().apply { addAll(originalData) }
-    }
-
-    override fun getCount() = visibilityData.size
-
-    override fun getItem(position: Int) = visibilityData[position]
-
-    override fun getItemId(position: Int) = position.toLong()
-
-    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
-        val tempView: View
-        val holder = if (null == convertView) {
-            tempView = LayoutInflater.from(parent!!.context)
-                .inflate(R.layout.item_auto_complete_drop_down, parent, false)
-            ViewHolder(tempView.findViewById(R.id.text1)).apply {
-                tempView.tag = this
-            }
-        } else {
-            tempView = convertView
-            convertView.tag as ViewHolder
-        }
-
-        val itemData = getItem(position)
-        holder.item.text = itemData.name
-
-        return tempView
-    }
-
-    private class ViewHolder(val item: TextView)
-
-    private var mFilter: Filter? = null
-
-    override fun getFilter(): Filter {
-        if (null == mFilter)
-            mFilter = InstructionFilter()
-        return mFilter!!
-    }
-
-    private val mLock = Any()
-
-    inner class InstructionFilter : Filter() {
-
-        override fun performFiltering(prefix: CharSequence?): FilterResults {
-            val results = FilterResults()
-
-            if (prefix.isNullOrEmpty()) {
-                val list: MutableList<HazardBook>
-                synchronized(mLock) {
-                    list = mutableListOf<HazardBook>().apply { addAll(originalData) }
-                }
-                results.values = list
-                results.count = list.size
-            } else {
-                val fPrefix = prefix.toString().lowercase(Locale.getDefault())
-
-                val newlyData = originalData.filter {
-                    val fName = it.name.lowercase(Locale.getDefault())
-                    val fPinYinChar = it.pinYinChar.lowercase(Locale.getDefault())
-                    fName?.contains(fPrefix) ?: false || fPinYinChar?.contains(fPrefix) ?: false
-                }
-                results.values = newlyData
-                results.count = newlyData.size
-            }
-            return results
-        }
-
-        override fun publishResults(constraint: CharSequence?, results: FilterResults) {
-            visibilityData.clear()
-            visibilityData.addAll(results.values as Collection<HazardBook>)
-            if (results.count > 0) {
-                notifyDataSetChanged()
-            } else {
-                notifyDataSetInvalidated()
-            }
-        }
-    }
-
-}

+ 1 - 1
app/src/main/java/xn/xxp/main/risk/RiskListActivity.java

@@ -117,7 +117,7 @@ public class RiskListActivity extends BaseCountDownActivity<ActivityRiskListBind
         HazardReq param = new HazardReq();
         HazardReq param = new HazardReq();
         param.subId = String.valueOf(labConfig.getLabId());
         param.subId = String.valueOf(labConfig.getLabId());
         param.pageNum = 1;
         param.pageNum = 1;
-        param.pageSize = 20;
+        param.pageSize = 100;
 
 
         Disposable disposable = ApiRepository.INSTANCE.hazardlist(param)
         Disposable disposable = ApiRepository.INSTANCE.hazardlist(param)
                 .subscribe(data -> {
                 .subscribe(data -> {

+ 81 - 0
app/src/main/java/xn/xxp/widget/SelectHazardBookDialog.java

@@ -0,0 +1,81 @@
+package xn.xxp.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+
+import androidx.annotation.NonNull;
+
+import java.util.List;
+
+import http.vo.response.HazardBook;
+import xn.xxp.databinding.SelectDialogBinding;
+
+
+public class SelectHazardBookDialog extends Dialog {
+    private Context context;
+    private SelectDialogBinding binding;
+    private List<HazardBook> hazardBookList;
+    private SelectedListener selectedListener;
+    private String dialogName;
+
+    public SelectHazardBookDialog(@NonNull Context context, String dialogName, List<HazardBook> hazardBookList, SelectedListener selectedListener) {
+        super(context);
+        this.context = context;
+        this.hazardBookList = hazardBookList;
+        this.selectedListener = selectedListener;
+        this.dialogName = dialogName;
+    }
+
+    public interface SelectedListener {
+        void selected(HazardBook hazardBook);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        binding = SelectDialogBinding.inflate(getLayoutInflater());
+        setContentView(binding.getRoot());
+        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+        getWindow().setGravity(Gravity.CENTER);
+        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
+        setCanceledOnTouchOutside(false);
+
+        binding.dialogName.setText(TextUtils.isEmpty(dialogName) ? "" : dialogName);
+        if (null != hazardBookList) {
+            String[] hazardBookArray = new String[hazardBookList.size()];
+            for (int i = 0; i < hazardBookList.size(); i++) {
+                HazardBook hazardBook = hazardBookList.get(i);
+                hazardBookArray[i] = hazardBook.name;
+            }
+            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, hazardBookArray);
+            binding.listView.setAdapter(arrayAdapter);
+            binding.listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                    HazardBook hazardBook = hazardBookList.get(position);
+                    selectedListener.selected(hazardBook);
+                    dismiss();
+                }
+            });
+        }
+
+        binding.close.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
+
+    }
+}

+ 14 - 7
app/src/main/res/layout/activity_instruction.xml

@@ -105,24 +105,31 @@
                 android:textColor="#ff333333"
                 android:textColor="#ff333333"
                 android:textSize="14sp" />
                 android:textSize="14sp" />
 
 
-            <androidx.appcompat.widget.AppCompatAutoCompleteTextView
-                android:id="@+id/sdmsInput"
+            <EditText
+                android:id="@+id/searchET"
                 android:layout_width="300dp"
                 android:layout_width="300dp"
                 android:layout_height="36dp"
                 android:layout_height="36dp"
                 android:background="@drawable/bg_edit"
                 android:background="@drawable/bg_edit"
-                android:completionThreshold="1"
                 android:drawableStart="@mipmap/icon_jssm_ss"
                 android:drawableStart="@mipmap/icon_jssm_ss"
                 android:drawablePadding="5dp"
                 android:drawablePadding="5dp"
                 android:gravity="center_vertical"
                 android:gravity="center_vertical"
-                android:hint="请输入危化品名称或拼音首字母搜索"
-                android:imeOptions="flagNoExtractUi"
                 android:maxLines="1"
                 android:maxLines="1"
                 android:padding="7dp"
                 android:padding="7dp"
                 android:singleLine="true"
                 android:singleLine="true"
                 android:textColor="#FF333333"
                 android:textColor="#FF333333"
                 android:textColorHint="#FFCCCCCC"
                 android:textColorHint="#FFCCCCCC"
-                android:textSize="11sp"
-                tools:ignore="SmallSp" />
+                android:textSize="11sp" />
+
+            <TextView
+                android:id="@+id/search"
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="20dp"
+                android:background="@drawable/bg_leave_confirm"
+                android:gravity="center"
+                android:paddingVertical="5dp"
+                android:text="搜索"
+                android:textColor="@color/white" />
 
 
         </LinearLayout>
         </LinearLayout>
 
 

+ 57 - 0
app/src/main/res/layout/select_dialog.xml

@@ -0,0 +1,57 @@
+<?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="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="418dp"
+        android:layout_height="340dp"
+        android:background="@drawable/shape_rect_round_6_solid_white"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/dialogName"
+            android:layout_width="wrap_content"
+            android:layout_height="40dp"
+            android:layout_centerHorizontal="true"
+            android:layout_gravity="center"
+            android:layout_marginTop="10dp"
+            android:ellipsize="end"
+            android:gravity="center"
+            android:maxLines="1"
+            android:text="提醒"
+            android:textColor="@color/black"
+            android:textSize="18sp" />
+
+        <ListView
+            android:id="@+id/listView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_below="@id/dialogName"
+            android:layout_margin="10dp" />
+    </RelativeLayout>
+
+    <LinearLayout
+        android:id="@+id/control"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="20dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/close"
+            android:layout_width="110dp"
+            android:layout_height="32dp"
+            android:layout_marginHorizontal="20dp"
+            android:background="@drawable/bg_leave_confirm"
+            android:gravity="center"
+            android:text="关闭"
+            android:textColor="@color/white" />
+
+    </LinearLayout>
+
+
+</LinearLayout>