package com.basic.security.fragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import com.basic.security.R; import com.basic.security.base.BaseFragment; import com.basic.security.manager.impl.cblite.BusinessDetailManager; import com.basic.security.manager.impl.cblite.BusinessListManager; import com.basic.security.manager.impl.cblite.BusinessManager; import com.basic.security.manager.impl.cblite.TimeManager; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.DateEditUtil; import com.basic.security.utils.DateUtil; import com.basic.security.utils.KeyboardUtil; import com.basic.security.utils.ToastUtil; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.ViewById; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 新建业务表名称页面 */ @EFragment(R.layout.fragment_rule_detail) public class RuleDetailFragment extends BaseFragment { @ViewById public RelativeLayout rl_check_hint; // 新增的逻辑业务,业务表 @ViewById EditText et_business_name, et_only_allow_start, et_only_allow_end, et_search_device, et_access_hint, et_not_reached_time_hint, et_not_reached_time_remind, et_confirm_pass_hint; @ViewById RadioButton rb_only_allow, rb_choose_from_time_rule, rb_check_all_device; @ViewById LinearLayout ll_choose_from_time_rule; @ViewById ListView lv_choose_from_time_rule, lv_choose_from_all_device; @ViewById ImageView iv_search_device, iv_access_hint_check, iv_access_hint_show, iv_not_reached_time_check, iv_not_reached_time_show, iv_confirm_pass_check, iv_confirm_pass_show; @ViewById Button btn_reset, btn_save_business, btn_check_message_save, btn_check_message_cancel; @ViewById CheckBox ck_access_table_name, ck_access_identity, ck_access_name, ck_confirm_pass_identity, ck_confirm_pass_name; @ViewById GridView gv_hint; @ViewById Spinner time_unit; private AllDeviceAdapter allDeviceAdapter; private ModelAdapter businessDocument; private boolean createNew; private String checkedTimeRuleId = ""; // 选中时间规则的id private Map checkDeviceMap = new HashMap<>(); private List applyDeviceList; private String remindTime = "分钟"; private List allTimeRule; private TimeRuleAdapter timeRuleAdapter; private int intTag = -1; private int intAccessPassTag = 0; // 允许通行的标识 private int intNotReachTimeTag = 1; // 未到通行时间的标识 private int intConfirmPassTag = 2; // 确认通行的标识 private List mList = new ArrayList(); private List currentCheckedMessages = new ArrayList(); private boolean showData = false; // 此参数为了让获取设备列表数据回显 private int temple = -1; @Click void rb_only_allow() { rb_only_allow.setChecked(true); rb_choose_from_time_rule.setChecked(false); ll_choose_from_time_rule.setVisibility(View.GONE); } @Click void rb_choose_from_time_rule() { rb_only_allow.setChecked(false); rb_choose_from_time_rule.setChecked(true); ll_choose_from_time_rule.setVisibility(View.VISIBLE); } @Click void et_only_allow_start() { KeyboardUtil.hideSoftKeyboard(); DateEditUtil.showStartAndEndDate(et_only_allow_start, et_only_allow_end); } @Click void et_only_allow_end() { KeyboardUtil.hideSoftKeyboard(); DateEditUtil.showDate(et_only_allow_end); } @Click void rb_check_all_device() { rb_check_all_device.setChecked(true); allDeviceAdapter.checked(true); allDeviceAdapter.notifyDataSetChanged(); } @Click void btn_reset() { rb_check_all_device.setChecked(false); allDeviceAdapter.checked(false); allDeviceAdapter.notifyDataSetChanged(); } @Click void iv_access_hint_check() { KeyboardUtil.hideSoftKeyboard(); intTag = intAccessPassTag; showPopupWindow(intTag); } @Click void iv_access_hint_show() { KeyboardUtil.hideSoftKeyboard(); String message = ""; if (ck_access_table_name.isChecked()) { message = "家长会 "; } if (ck_access_identity.isChecked()) { message = message + "家长 "; } if (ck_access_name.isChecked()) { message = message + "刘克 "; } if (!TextUtils.isEmpty(et_access_hint.getText().toString().trim())) { message = message + et_access_hint.getText().toString().trim(); } if (!TextUtils.isEmpty(message)) { ToastUtil.show(message); } } @Click void iv_not_reached_time_check() { KeyboardUtil.hideSoftKeyboard(); intTag = intNotReachTimeTag; showPopupWindow(intTag); } @Click void iv_not_reached_time_show() { KeyboardUtil.hideSoftKeyboard(); ToastUtil.show(et_not_reached_time_hint.getText().toString()); } @Click void iv_confirm_pass_check() { KeyboardUtil.hideSoftKeyboard(); intTag = intConfirmPassTag; showPopupWindow(intTag); } @Click void iv_confirm_pass_show() { KeyboardUtil.hideSoftKeyboard(); String message = ""; if (ck_confirm_pass_identity.isChecked()) { message = "家长 "; } if (ck_confirm_pass_name.isChecked()) { message = message + "刘克 "; } if (!TextUtils.isEmpty(et_confirm_pass_hint.getText().toString().trim())) { message = message + et_confirm_pass_hint.getText().toString().trim(); } if (!TextUtils.isEmpty(message)) { ToastUtil.show(message); } } @Click void btn_save_business() { // 点击保存 1 选中 if (businessDocument == null) { businessDocument = new ModelAdapter(); } String business_name = et_business_name.getText().toString().trim(); if (TextUtils.isEmpty(business_name)) { ToastUtil.show("业务表名称不能为空"); return; } if (createNew) { List businessList = BusinessListManager.getBusinessList(); for (ModelAdapter businessName : businessList) { if (business_name.equals(businessName.getString("business_name"))) { ToastUtil.show("已有此业务表名称,请更改业务表名称"); return; } } } businessDocument.setString("business_name", business_name); if (rb_only_allow.isChecked()) { businessDocument.setString("only_allow", "1"); businessDocument.setString("choose_from_time_rule", "0"); String startTime = et_only_allow_start.getText().toString().trim(); String endTime = et_only_allow_end.getText().toString().trim(); businessDocument.setString("only_allow_start", DateUtil.getDefaultTimeStamp(startTime) + ""); businessDocument.setString("only_allow_end", DateUtil.getDefaultTimeStamp(endTime) + ""); } if (rb_choose_from_time_rule.isChecked()) { businessDocument.setString("choose_from_time_rule", "1"); businessDocument.setString("only_allow", "0"); businessDocument.setString("checked_time_rule_id", checkedTimeRuleId); } // 存储选择的设备(ids,ids,ids....) saveCheckedDevice(businessDocument); businessDocument.setString("access_identity", ck_access_identity.isChecked() ? "1" : "0"); businessDocument.setString("access_table_name", ck_access_table_name.isChecked() ? "1" : "0"); businessDocument.setString("access_name", ck_access_name.isChecked() ? "1" : "0"); String access_hint = et_access_hint.getText().toString().trim(); if (TextUtils.isEmpty(access_hint)) { ToastUtil.show("允许通行提示语不能为空"); return; } businessDocument.setString("access_hint", access_hint); String not_reached_time_hint = et_not_reached_time_hint.getText().toString().trim(); if (TextUtils.isEmpty(not_reached_time_hint)) { ToastUtil.show("未到通行时间提示语不能为空"); return; } businessDocument.setString("not_reached_time_hint", not_reached_time_hint); // 存储时多少时间前开始提示,时间单位为秒 String not_reached_time_remind = et_not_reached_time_remind.getText().toString().trim(); if (TextUtils.isEmpty(not_reached_time_remind)) { ToastUtil.show("开始时间前提示时间不能为空"); return; } businessDocument.setString("not_reached_time_remind", not_reached_time_remind); businessDocument.setString("time_unit", remindTime); businessDocument.setString("confirm_pass_identity", ck_confirm_pass_identity.isChecked() ? "1" : "0"); businessDocument.setString("confirm_pass_name", ck_confirm_pass_name.isChecked() ? "1" : "0"); String confirm_pass_hint = et_confirm_pass_hint.getText().toString().trim(); if (TextUtils.isEmpty(confirm_pass_hint)) { ToastUtil.show("确认通行提示语不能为空"); return; } businessDocument.setString("confirm_pass_hint", confirm_pass_hint); businessDocument.setString("create_time", System.currentTimeMillis() + ""); businessDocument.setString("table", "business"); BusinessManager.saveBusiness(businessDocument); ToastUtil.show("保存成功"); showFragment(mainActivity().fragment_rule_list); } private void saveCheckedDevice(ModelAdapter businessDocument) { // 此业务表应用到那些设备 applyDeviceList = BusinessDetailManager.getDeviceByBusiness(businessDocument.getId()); for (String checkedDeviceId : checkDeviceMap.keySet()) { if (!TextUtils.isEmpty(checkedDeviceId)) { applyDeviceList.remove(checkedDeviceId); BusinessDetailManager.save(businessDocument.getId(), checkedDeviceId); } } for (String deviceId : applyDeviceList) { BusinessDetailManager.delete(businessDocument.getId(), deviceId); } } @Override public void hide() { super.hide(); intTag = -1; } @Override public void show() { // 数据回显 checkedTimeRuleId = ""; if (businessDocument == null) { businessDocument = new ModelAdapter(); et_only_allow_start.setText(DateUtil.formatTime(DateUtil.getTimesMorning(), "yyyy/MM/dd HH:mm")); et_only_allow_end.setText(DateUtil.formatTime(DateUtil.getTimesNight(), "yyyy/MM/dd HH:mm")); rb_only_allow(); showData = false; } else { if ("1".equals(businessDocument.getString("choose_from_time_rule"))) { // 选中从时间规则中选取 checkedTimeRuleId = businessDocument.getString("checked_time_rule_id"); rb_choose_from_time_rule(); } else { String start_time = DateUtil.formatTime(Long.parseLong(businessDocument.getString("only_allow_start")), "yyyy/MM/dd HH:mm"); String end_time = DateUtil.formatTime(Long.parseLong(businessDocument.getString("only_allow_end")), "yyyy/MM/dd HH:mm"); et_only_allow_start.setText(start_time); et_only_allow_end.setText(end_time); rb_only_allow(); } remindTime = businessDocument.getString("time_unit"); applyDeviceList = BusinessDetailManager.getDeviceByBusiness(businessDocument.getId()); showData = true; } //优化后代码 et_business_name.setText(businessDocument.getString("business_name")); et_search_device.setText(""); et_access_hint.setText(businessDocument.getString("access_hint") == "" ? "欢迎光临" : businessDocument.getString("access_hint")); et_not_reached_time_hint.setText(businessDocument.getString("not_reached_time_hint") == "" ? "未到通行时间,请稍后" : businessDocument.getString("not_reached_time_hint")); et_not_reached_time_remind.setText(businessDocument.getString("not_reached_time_remind") == "" ? "30" : businessDocument.getString("not_reached_time_remind")); et_confirm_pass_hint.setText(businessDocument.getString("confirm_pass_hint") == "" ? "业务表确认通行" : businessDocument.getString("confirm_pass_hint")); ck_access_identity.setChecked("1".equals(businessDocument.getString("access_identity")) ? true : false); ck_access_table_name.setChecked("1".equals(businessDocument.getString("access_table_name")) ? true : false); ck_access_name.setChecked("1".equals(businessDocument.getString("access_name")) ? true : false); ck_confirm_pass_identity.setChecked("1".equals(businessDocument.getString("confirm_pass_identity")) ? true : false); ck_confirm_pass_name.setChecked("1".equals(businessDocument.getString("confirm_pass_name")) ? true : false); aboutTimeRule(); aboutAllDevice(); timeUnitCombox(); } private void aboutTimeRule() { allTimeRule = TimeManager.getAllUseTimeRule(); timeRuleAdapter = new TimeRuleAdapter(allTimeRule); lv_choose_from_time_rule.setAdapter(timeRuleAdapter); lv_choose_from_time_rule.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { checkedTimeRuleId = allTimeRule.get(position).getId(); timeRuleAdapter.notifyDataSetChanged(); } }); } private void timeUnitCombox() { String[] arr = {"分钟", "小时", "天"}; ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.spinner_item, arr); time_unit.setPopupBackgroundResource(R.color.press_menu_text); time_unit.setAdapter(adapter); time_unit.setSelection(Arrays.binarySearch(arr, remindTime), true); time_unit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { remindTime = arr[position]; } @Override public void onNothingSelected(AdapterView parent) { } }); } private void aboutAllDevice() { List allDevice = new ArrayList<>(); allDevice.clear(); allDevice = BusinessDetailManager.getDeviceDataList(); // List documents = BusinessDetailManager.getDeviceDataList(); // for (ModelAdapter device : documents) { // allDevice.add(device); // } allDeviceAdapter = new AllDeviceAdapter(allDevice); lv_choose_from_all_device.setAdapter(allDeviceAdapter); } private void showPopupWindow(int tag) { mList.clear(); currentCheckedMessages.clear(); if (tag == intAccessPassTag) { for (int i = 0; i < 5; i++) { mList.add("欢迎光临" + i); } } else if (tag == intNotReachTimeTag) { for (int i = 0; i < 6; i++) { mList.add("未到通行时间" + i); } } else if (tag == intConfirmPassTag) { for (int i = 0; i < 7; i++) { mList.add("确认通行" + i); } } rl_check_hint.setVisibility(View.VISIBLE); gv_hint.setAdapter(new gridViewAdapter()); } @Click void btn_check_message_save() { temple = -1; if (currentCheckedMessages.size() > 1) { ToastUtil.show("只能选一个"); return; } rl_check_hint.setVisibility(View.GONE); if (currentCheckedMessages.size() == 1) { if (intTag == intAccessPassTag) { et_access_hint.setText(currentCheckedMessages.get(0)); } else if (intTag == intNotReachTimeTag) { et_not_reached_time_hint.setText(currentCheckedMessages.get(0)); } else if (intTag == intConfirmPassTag) { et_confirm_pass_hint.setText(currentCheckedMessages.get(0)); } } intTag = -1; } @Click void btn_check_message_cancel() { temple = -1; rl_check_hint.setVisibility(View.GONE); intTag = -1; } public void setBusinessDetailDocument(ModelAdapter businessDocument, boolean needCreateNew) { createNew = needCreateNew; // 是新建的还是编辑以前的 this.businessDocument = businessDocument; } // 时间规则的适配器 private class TimeRuleAdapter extends BaseAdapter { private List timeRuleList; public TimeRuleAdapter(List timeRuleList) { this.timeRuleList = timeRuleList; } @Override public int getCount() { return timeRuleList == null ? 0 : timeRuleList.size(); } @Override public Object getItem(int position) { return timeRuleList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(getActivity()).inflate(R.layout.business_time_rule, null); viewHolder.radio_button = convertView.findViewById(R.id.radio_button); viewHolder.tv_message = convertView.findViewById(R.id.tv_message); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tv_message.setText(timeRuleList.get(position).getString("time_rule_name")); // if (businessDocument == null) { // 假如是新建的业务表,清空选中状态 viewHolder.radio_button.setChecked(false); // } if (timeRuleList.get(position).getId().equals(checkedTimeRuleId)) { viewHolder.radio_button.setChecked(true); } return convertView; } class ViewHolder { RadioButton radio_button; TextView tv_message; } } // 所有设备的适配器 private class AllDeviceAdapter extends BaseAdapter { private List allDevice; private boolean allChecked; public AllDeviceAdapter(List allDevice) { this.allDevice = allDevice; } public void checked(boolean checkedAll) { allChecked = checkedAll; } @Override public int getCount() { return allDevice == null ? 0 : allDevice.size(); } @Override public Object getItem(int position) { return allDevice.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {//item_identity_list View view; ViewHolder viewHolder; if (convertView == null) { //加载子布局 viewHolder = new ViewHolder(); view = LayoutInflater.from(getContext()).inflate(R.layout.item_identity_list, parent, false); viewHolder.checkBox = view.findViewById(R.id.item_ck); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.checkBox.setText(" " + allDevice.get(position).getString("name")); if (allChecked) { viewHolder.checkBox.setChecked(true); } else { viewHolder.checkBox.setChecked(false); } // 回显数据 if (showData && applyDeviceList != null && applyDeviceList.contains(allDevice.get(position).getId())) { viewHolder.checkBox.setChecked(true); // showData = false; } viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (!checkDeviceMap.containsKey(allDevice.get(position).getId())) { checkDeviceMap.put(allDevice.get(position).getId(), allDevice.get(position)); } } else { checkDeviceMap.remove(allDevice.get(position).getId()); } } }); return view; } class ViewHolder { CheckBox checkBox; } } // 选择提示语的适配器 private class gridViewAdapter extends BaseAdapter { @Override public int getCount() { return mList == null ? 0 : mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { //加载子布局 convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_identity_list, parent, false); viewHolder = new ViewHolder(); viewHolder.checkBox = convertView.findViewById(R.id.item_ck); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.checkBox.setText(mList.get(position)); // 设置单选 viewHolder.checkBox.setId(position * 9); viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) {//如果是选中状态 currentCheckedMessages.clear(); currentCheckedMessages.add(mList.get(position)); if (temple != -1) {//temp不为-1,说明已经进行过点击事件 CheckBox tempButton = getActivity().findViewById(temple); if (tempButton != null) { tempButton.setChecked(false);//取到上一次点击的RadioButton,并设置为未选中状态 } } temple = buttonView.getId();//将temp重新赋值,记录下本次点击的RadioButton } } }); if (position == temple) { viewHolder.checkBox.setChecked(true);//将本次点击的RadioButton设置为选中状态 } else { viewHolder.checkBox.setChecked(false); } return convertView; } class ViewHolder { private CheckBox checkBox; } } // 以下为规则详情,现在没用 /*@ViewById RadioButton no_limit_times, limit_times, no_limit_time, limit_time, all_device, part_device; @ViewById EditText allow_start_time, allow_end_time, days, times, rule_name; @ViewById Button save, cancel; @ViewById EditText search_text, verify_pass_tip; @ViewById ListView device_location; @ViewById View times_limit_layout, time_limit_layout; @ViewById CheckBox show_identity; private List showList = new ArrayList<>(); private List totalList = new ArrayList<>(); private deviceListAdapter adapter; ModelAdapter mutableDocument = new ModelAdapter(); private boolean isNew = false; @Click void limit_times() { no_limit_times.setChecked(!limit_times.isChecked()); if (limit_times.isChecked()) { // 如果选中默认10天10次 days.setFaceDetailUI("10"); times.setFaceDetailUI("10"); } else { days.setFaceDetailUI(""); times.setFaceDetailUI(""); } times_limit_layout.setVisibility(View.VISIBLE); } @Click void no_limit_times() { limit_times.setChecked(!no_limit_times.isChecked()); times_limit_layout.setVisibility(View.GONE); } @Click void limit_time() { no_limit_time.setChecked(!limit_time.isChecked()); time_limit_layout.setVisibility(View.VISIBLE); } @Click void no_limit_time() { limit_time.setChecked(!no_limit_time.isChecked()); time_limit_layout.setVisibility(View.GONE); } @Click void allow_start_time() { DateEditUtil.showStartAndEndDate(allow_start_time, allow_end_time); } @Click void allow_end_time() { DateEditUtil.showDate(allow_end_time); } @Click void all_device() { if (all_device.isChecked()) { device_location.setVisibility(View.INVISIBLE); } } @Click void part_device() { if (part_device.isChecked()) { device_location.setVisibility(View.VISIBLE); LoadDeviceList(); } } private TextWatcher watcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String key = search_text.getText().toString().toLowerCase(); showList.clear(); for (DeviceItem item : totalList) { if (item.getName().toLowerCase().contains(key) || item.getDevice_id().toLowerCase().contains(key) || item.getDevice_address().toLowerCase().contains(key)) { showList.add(item); } } adapter.notifyDataSetChanged(); } }; @Override public void show() { super.show(); inSave = false; if (search_text != null) { search_text.setFaceDetailUI(""); search_text.addTextChangedListener(watcher); } } @Override public void hide() { super.hide(); if (search_text != null) { search_text.removeTextChangedListener(watcher); } } @Click void cancel() { mainActivity().showFragment(mainActivity().fragment_rule_list); } private boolean inSave = false; @Click void save() { synchronized (this) { if (inSave) { return; } else { inSave = true; } } if (mutableDocument == null) { mutableDocument = new ModelAdapter(); mutableDocument.setString("table", "identity"); } String name = rule_name.getText().toString().trim(); if (TextUtils.isEmpty(name)) { ToastUtil.show("规则名称不能为空!"); inSave = false; return; } List ruleList = RuleManager.getRuleList(); for (ModelAdapter ruleName : ruleList) { if (name.equals(ruleName.getString("name"))) { if (isNew) { ToastUtil.show("规则列表中已包含此规则,请更改规则名称!"); inSave = false; return; } else { // if (!Objects.equals(mutableDocument.getId(), ruleName.getId())) { // ToastUtil.show("规则列表中已包含此规则,请更改规则名称!"); // inSave = false; // return; // } } } } if ("管理员".equals(mutableDocument.getString("name")) || "黑名单".equals(mutableDocument.getString("name")) || "自助注册".equals(mutableDocument.getString("name"))) { if (!mutableDocument.getString("name").equals(name)) { ToastUtil.show("此规则名称不可更改!"); inSave = false; return; } } if ("管理员".equals(mutableDocument.getString("name"))) { if (!show_identity.isChecked()) { ToastUtil.show("请选中验证时显示身份 !"); inSave = false; return; } } mutableDocument.setString("name", name); if (show_identity.isChecked()) { // 1显示,0不显示 mutableDocument.setString("show_identity", "1"); } else { mutableDocument.setString("show_identity", "0"); } if (no_limit_time.isChecked()) { // 1就是限制,0不限制 mutableDocument.setString("limit_time", "0"); } else { String begin_time = allow_start_time.getText().toString().trim(); String end_time = allow_end_time.getText().toString().trim(); mutableDocument.setString("limit_time", "1"); mutableDocument.setString("begin_time", DateUtil.getDefaultTimeStamp(begin_time) + ""); mutableDocument.setString("end_time", DateUtil.getDefaultTimeStamp(end_time) + ""); } if (no_limit_times.isChecked()) {// 1就是限制,0不限制 mutableDocument.setString("limit_count", "0"); } else { String per_days = days.getText().toString().trim(); String per_count = times.getText().toString().trim(); mutableDocument.setString("limit_count", "1"); mutableDocument.setString("per_days", per_days); mutableDocument.setString("per_count", per_count); } if (all_device.isChecked()) { // 是否应用到全部设备 mutableDocument.setString("apply_type", "0"); mutableDocument.setString("apply_device_ids", ""); } else { mutableDocument.setString("apply_type", "1"); StringBuilder ids = new StringBuilder(); for (DeviceItem item : totalList) { if (item.isCheck()) { ids.append(item.getDevice_id()).append(","); } } mutableDocument.setString("apply_device_ids", ids.toString()); } String strHint = verify_pass_tip.getText().toString().trim(); mutableDocument.setString("hint", strHint); mutableDocument.setString("device_id", DeviceManager.getDeviceId()); mutableDocument.setString("company_id", DeviceManager.getCompareId()); RuleDetailManager.save(mutableDocument); ToastUtil.show("保存成功"); ((RuleListFragment) mainActivity().fragment_rule_list).refreshList(); mainActivity().showFragment(mainActivity().fragment_rule_list);// 回到规则列表页面 // inSave = false; } @AfterViews void init() { no_limit_times.setChecked(true); no_limit_time.setChecked(true); all_device.setChecked(true); adapter = new deviceListAdapter(showList); device_location.setAdapter(adapter); adapter.notifyDataSetChanged(); allow_start_time.setFaceDetailUI(DateUtil.formatTime(System.currentTimeMillis(), "yyyy/MM/dd HH:mm")); allow_end_time.setFaceDetailUI(DateUtil.formatTime(System.currentTimeMillis(), "yyyy/MM/dd HH:mm")); time_limit_layout.setVisibility(limit_time.isChecked() ? View.VISIBLE : View.GONE); times_limit_layout.setVisibility(limit_times.isChecked() ? View.VISIBLE : View.GONE); device_location.setVisibility(all_device.isChecked() ? View.INVISIBLE : View.VISIBLE); } private void LoadDeviceList() { showList.clear(); totalList.clear(); List documents = RuleDetailManager.getDeviceDataList(); String device_ids = mutableDocument.getString("apply_device_ids"); for (ModelAdapter d : documents) { DeviceItem deviceItem = new DeviceItem(); deviceItem.setName(d.getString("name")); deviceItem.setDevice_address(d.getString("address")); deviceItem.setDevice_id(d.getString("device_id")); if (TextUtils.isEmpty(device_ids)) { deviceItem.setCheck(false); } else { if (device_ids.contains(deviceItem.getDevice_id())) { deviceItem.setCheck(true); } else { deviceItem.setCheck(false); } } if (DeviceManager.getDeviceId().equals(deviceItem.getDevice_id())) { deviceItem.setSelf(true); } else { deviceItem.setSelf(false); } totalList.add(deviceItem); } showList.addAll(totalList); adapter.notifyDataSetChanged(); } @UiThread public void showRuleDetail(ModelAdapter mutableDocument) { rule_name.setFaceDetailUI(mutableDocument.getString("name")); verify_pass_tip.setFaceDetailUI(mutableDocument.getString("hint")); if ("1".equals(mutableDocument.getString("show_identity"))) { show_identity.setChecked(true); } else { show_identity.setChecked(false); } if ("0".equals(mutableDocument.getString("limit_time"))) { no_limit_time.setChecked(true); limit_time.setChecked(false); time_limit_layout.setVisibility(View.GONE); } else { time_limit_layout.setVisibility(View.VISIBLE); no_limit_time.setChecked(false); limit_time.setChecked(true); long s_time = Long.parseLong(mutableDocument.getString("begin_time")); long e_time = Long.parseLong(mutableDocument.getString("end_time")); allow_start_time.setFaceDetailUI(DateUtil.formatTime(s_time, "yyyy/MM/dd HH:mm")); allow_end_time.setFaceDetailUI(DateUtil.formatTime(e_time, "yyyy/MM/dd HH:mm")); } if ("0".equals(mutableDocument.getString("limit_count"))) { no_limit_times.setChecked(true); limit_times.setChecked(false); times_limit_layout.setVisibility(View.GONE); } else { times_limit_layout.setVisibility(View.VISIBLE); no_limit_times.setChecked(false); limit_times.setChecked(true); mutableDocument.setString("limit_count", "1"); days.setFaceDetailUI(mutableDocument.getString("per_days")); times.setFaceDetailUI(mutableDocument.getString("per_count")); } if ("0".equals(mutableDocument.getString("apply_type"))) { all_device.setChecked(true); part_device.setChecked(false); device_location.setVisibility(View.INVISIBLE); } else { all_device.setChecked(false); part_device.setChecked(true); device_location.setVisibility(View.VISIBLE); } LoadDeviceList(); } public void setRuleDetailDocument(ModelAdapter mutableDocument) { if (mutableDocument != null) { isNew = false; this.mutableDocument = mutableDocument; showRuleDetail(mutableDocument); } else { isNew = true; this.mutableDocument = new ModelAdapter(); this.mutableDocument.setString("table", "identity"); rule_name.setFaceDetailUI(""); show_identity.setChecked(false); no_limit_time.setChecked(true); limit_time.setChecked(false); time_limit_layout.setVisibility(View.INVISIBLE); no_limit_times.setChecked(true); limit_times.setChecked(false); times_limit_layout.setVisibility(View.INVISIBLE); all_device.setChecked(true); part_device.setChecked(false); device_location.setVisibility(View.INVISIBLE); verify_pass_tip.setFaceDetailUI(""); } } // 显示设备列表 private class deviceListAdapter extends BaseAdapter { private List list; deviceListAdapter(List list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { vh = new ViewHolder(); convertView = LayoutInflater.from(getActivity()).inflate(R.layout.rule_for_time_detail_item, null); vh.check = convertView.findViewById(R.id.check); vh.device_address = convertView.findViewById(R.id.device_address); vh.device_id = convertView.findViewById(R.id.device_id); vh.is_self = convertView.findViewById(R.id.is_self); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } final DeviceItem item = list.get(position); vh.check.setFaceDetailUI(item.getName()); vh.check.setChecked(item.isCheck()); vh.device_address.setFaceDetailUI(item.getDevice_address()); vh.device_id.setFaceDetailUI(item.getDevice_id()); if (item.isSelf()) { vh.is_self.setVisibility(View.VISIBLE); } else { vh.is_self.setVisibility(View.INVISIBLE); } final ViewHolder finalVh = vh; vh.check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { item.setCheck(finalVh.check.isChecked()); for (DeviceItem t : totalList) { if (item.getDevice_id().equals(t.getDevice_id())) { t.setCheck(finalVh.check.isChecked()); } } adapter.notifyDataSetChanged(); } }); return convertView; } class ViewHolder { CheckBox check; TextView device_id, device_address; ImageView is_self; } }*/ }