package safeluck.drive.evaluation.fragment; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; 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.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatSpinner; import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.ViewModelProviders; import com.anyun.exam.lib.MyLog; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.DB.WorkRoomDataBase; import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel; import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.SignalConfigBean; import safeluck.drive.evaluation.util.CThreadPoolExecutor; /** * MyApplication2 * Created by lzw on 2019/3/27. 17:29:43 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class SignalConfigFragment extends SupportFragment { private static final int INDEX = 1; private static final int HIGHLEVEL = 2; private static final int MAINBOARD = 3; private ArrayAdapter adapter1; private ArrayAdapter adapter2; private String[] arr_strs; private List signalConfiglist =new ArrayList<>(); List list = new ArrayList<>();//要发送给remoteservice的信号配置,有可能发不出去 private ListView listView; private LinearLayout linearLayout; private static final String TAG = SignalConfigFragment.class.getSimpleName(); SignalConfigViewModel signalConfigViewModel; public static SupportFragment newInstance(){ return new SignalConfigFragment(); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.layout_signal_config,container,false); initView(view); return view; } private void initView(View view) { arr_strs = getResources().getStringArray(R.array.signals_name); linearLayout = view.findViewById(R.id.ll_container); listView =view.findViewById(R.id.lv_signalconf); listView.setDivider(null); final MySignalsAdapter mySignalsAdapter = new MySignalsAdapter(_mActivity); signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); signalConfigViewModel.getSignalConfigs().observe(this, singalConfigs -> { list.clear(); signalConfiglist.clear(); MyLog.i(TAG,"信号配置发生变化"); for (int i = 0; i < singalConfigs.size(); i++) { SingalConfig singalConfig = singalConfigs.get(i); i++; if (i { SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox1.getTag(); signalConfigBean.setOne(isChecked); signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2); }); viewHolder.checkBox1.setTag(signalConfiglist.get(position)); viewHolder.checkBox3.setTag(signalConfiglist.get(position)); adapter1 = new ArrayAdapter(_mActivity,R.layout.spinner_item,arr_strs); adapter1.setDropDownViewResource(R.layout.dropdown_stytle); adapter2 = new ArrayAdapter(_mActivity,R.layout.spinner_item,arr_strs); adapter2.setDropDownViewResource(R.layout.dropdown_stytle); viewHolder.editText1.setAdapter(adapter1); viewHolder.editText2.setAdapter(adapter2); viewHolder.editText1.setTag(position*2+1); viewHolder.editText2.setTag((2*(1+position))); viewHolder.editText1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { int index = (int) viewHolder.editText1.getTag(); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { int indexPre = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName2Index(arr_strs[pos]); int fun_id = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(arr_strs[pos]); Log.i(TAG,String.format("Spinner1 index=%d,fun_id=%d对应的信号名称=%s,index" ,index,fun_id,arr_strs[pos])); String siname=WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName(index); int fun_idpRe= WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(siname); Log.i(TAG,index+" "+siname+ " arr-Strs[pos]="+arr_strs[pos]+ " "+pos); if (siname!=null&&siname.equals(arr_strs[pos])){ }else{ Log.i(TAG,String.format("把%s信号的index=%d改为%d",siname,index,indexPre)); Log.i(TAG,String.format("把%s信号的index=%d改为%d",arr_strs[pos],indexPre,index)); WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(indexPre,fun_idpRe); WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(index,fun_id); // signalConfigViewModel.updateindex(indexPre,getSigal2Pos(siname)); } Log.i(TAG,String.format("Spinner1 index=%d,fun_id=%d对应的信号名称=%s,index" + "pre=%d,indexpreName=%s",index,pos ,arr_strs[pos],indexPre,siname)); // signalConfigViewModel.updateindex(index,pos); } }); } @Override public void onNothingSelected(AdapterView parent) { } }); viewHolder.editText2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { int index = (int) viewHolder.editText2.getTag(); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { int indexPre = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName2Index(arr_strs[pos]); int fun_id = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(arr_strs[pos]); Log.i(TAG,String.format("Spinner2 index=%d,fun_id=%d对应的信号名称=%s,index" ,index,fun_id,arr_strs[pos])); String siname=WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName(index); int fun_idpRe= WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(siname); Log.i(TAG,index+" sp2 "+siname+ " arr-Strs[pos]="+arr_strs[pos]+ " "+pos); if (siname!=null&&siname.equals(arr_strs[pos])){ }else{ Log.i(TAG,String.format("sp2把%s信号的index=%d改为%d",siname,index,indexPre)); Log.i(TAG,String.format("sp2把%s信号的index=%d改为%d",arr_strs[pos],indexPre,index)); WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(indexPre,fun_idpRe); WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(index,fun_id); // signalConfigViewModel.updateindex(indexPre,getSigal2Pos(siname)); } Log.i(TAG,String.format("Spinner2 index=%d,fun_id=%d对应的信号名称=%s,index" + "pre=%d,indexpreName=%s",index,pos ,arr_strs[pos],indexPre,siname)); } }); } @Override public void onNothingSelected(AdapterView parent) { } }); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); viewHolder.checkBox1.setTag(signalConfiglist.get(position)); viewHolder.checkBox3.setTag(signalConfiglist.get(position)); viewHolder.editText1.setTag(position*2+1); viewHolder.editText2.setTag((2*(1+position))); } final SignalConfigBean signalConfigItem = getItem(position); viewHolder.textView1.setText(String.valueOf(position*2+1)); viewHolder.textView2.setText(String.valueOf(2*(1+position))); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { String signName1=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName(position*2+1); String s2=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName((position+1)*2); getActivity().runOnUiThread(new Runnable() { @Override public void run() { Log.i(TAG,"CThreadPoolExecutor position="+position+ " s1="+signName1+" s2="+s2); viewHolder.editText1.setSelection(getSigal2Pos(signName1)); viewHolder.editText2.setSelection(getSigal2Pos(s2)); } }); } }); viewHolder.checkBox1.setChecked(signalConfigItem.isOne()); viewHolder.checkBox3.setChecked(signalConfigItem.isThree()); return convertView; } class ViewHolder{ CheckBox checkBox1; CheckBox checkBox3; AppCompatSpinner editText1; AppCompatSpinner editText2; TextView textView1; TextView textView2; public ViewHolder(final View convertView) { checkBox1 = convertView.findViewById(R.id.signal_check_1); checkBox3 = convertView.findViewById(R.id.signal_check_3); editText1 = convertView.findViewById(R.id.et_signal1_port); editText2 = convertView.findViewById(R.id.et_signal2_port); textView1 = convertView.findViewById(R.id.tv_signal_1); textView2 = convertView.findViewById(R.id.tv_signal_2); } } } private int getSigal2Pos(String signalConfigItem) { for (int i = 0; i < arr_strs.length; i++) { if (arr_strs[i].equals(signalConfigItem)){ return i; }else{ continue; } } return -1; } }