package com.basic.security.fragment; 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.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.TimeManager; import com.basic.security.model.ModelAdapter; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.ViewById; import java.util.ArrayList; import java.util.List; @EFragment(R.layout.fragment_face_detail_time) public class FaceDetailTimeFragment extends BaseFragment { public static String checkedTimeRuleId = ""; @ViewById public RelativeLayout rl_check_pass_time, rl_dialog; public List checkedDeviceList = new ArrayList<>(); @ViewById ListView lv_check_time; @ViewById Button btn_check_time_save, btn_check_time_cancel; @ViewById TextView tv_title; private boolean isShowTitle = true; public void hide() { } @Override public void show() { super.show(); if (isShowTitle) { tv_title.setVisibility(View.VISIBLE); } else { tv_title.setVisibility(View.GONE); } } @Click void btn_check_time_save() { System.out.println(checkedTimeRuleId); mainActivity().hideOneFragment(mainActivity().fragment_face_detail_time); } @Click void btn_check_time_cancel() { // checkedTimeRuleId = ""; mainActivity().hideOneFragment(mainActivity().fragment_face_detail_time); } /** * 选择集群设备的弹出框 */ public void checkDevice() { isShowTitle = false; mainActivity().showOneFragment(mainActivity().fragment_face_detail_time); List allDevice = BusinessDetailManager.getDeviceDataList(); AllDeviceAdapter allDeviceAdapter = new AllDeviceAdapter(allDevice); lv_check_time.setAdapter(allDeviceAdapter); } public void checkPassTime(String checkedRuleId) { checkedTimeRuleId = checkedRuleId; isShowTitle = true; List timeRuleList = TimeManager.getAllUseTimeRule(); TimeRuleAdapter timeRuleAdapter = new TimeRuleAdapter(timeRuleList); lv_check_time.setAdapter(timeRuleAdapter); lv_check_time.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { checkedTimeRuleId = timeRuleList.get(position).getId(); timeRuleAdapter.notifyDataSetChanged(); } }); mainActivity().showOneFragment(mainActivity().fragment_face_detail_time); } private class AllDeviceAdapter extends BaseAdapter { private List allDevice; public AllDeviceAdapter(List allDevice) { this.allDevice = allDevice; } @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) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(getActivity()).inflate(R.layout.checkbox_spinner_item, null); viewHolder.checkBox = convertView.findViewById(R.id.ck_item_spinner); viewHolder.spinner = convertView.findViewById(R.id.spinner_item_spinner); viewHolder.spinner.setEnabled(false); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.checkBox.setText(allDevice.get(position).getString("name")); checkedDeviceList.add(allDevice.get(position).getString("name")); ViewHolder finalViewHolder = viewHolder; viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (finalViewHolder.checkBox.isChecked()) { checkedDeviceList.add(allDevice.get(position).getString("name")); } else { if (checkedDeviceList.contains(allDevice.get(position).getString("name"))) { checkedDeviceList.remove(allDevice.get(position).getString("name")); } } } }); initSpinner(viewHolder.spinner); return convertView; } private void initSpinner(Spinner spinner) { String[] arr = {"允许通行" // , "有效时间内通行", "确认通行", "拒绝通行" }; ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.spinner_item, arr); spinner.setPopupBackgroundResource(R.color.press_menu_text); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { } @Override public void onNothingSelected(AdapterView parent) { } }); } class ViewHolder { CheckBox checkBox; Spinner spinner; } } 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")); viewHolder.radio_button.setChecked(false); // 默认选中第一个 /*if (TextUtils.isEmpty(checkedTimeRuleId) && position == 0) { viewHolder.radio_button.setChecked(true); checkedTimeRuleId = timeRuleList.get(position).getId(); }*/ if (timeRuleList.get(position).getId().equals(checkedTimeRuleId)) { viewHolder.radio_button.setChecked(true); } else { viewHolder.radio_button.setChecked(false); } return convertView; } class ViewHolder { RadioButton radio_button; TextView tv_message; } } }