package safeluck.drive.evaluation.fragment; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.MyLog; import com.google.gson.Gson; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; 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.bean.SignalConfigRemote; import safeluck.drive.evaluation.util.Utils; /** * 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 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int id = msg.arg1; int sig = msg.arg2; switch (msg.what){ case INDEX: signalConfigViewModel.updateindex(sig,id); break; case HIGHLEVEL: break; case MAINBOARD: break; } } }; private List signalConfiglist =new ArrayList<>(); List list = new ArrayList<>();//要发送给remoteservice的信号配置,有可能发不出去 private Toolbar mToobar; 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) { mToobar = view.findViewById(R.id.toolbar); mToobar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp,null)); linearLayout = view.findViewById(R.id.ll_container); mToobar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { _mActivity.onBackPressed(); } }); mToobar.setTitle("信号配置"); listView =new ListView(_mActivity); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); ViewGroup.LayoutParams layoutParams1 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); listView.setLayoutParams(layoutParams); linearLayout.addView(listView); listView.setDivider(null); final MySignalsAdapter mySignalsAdapter = new MySignalsAdapter(_mActivity); signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); signalConfigViewModel.getSignalConfigs().observe(this, new Observer>() { @Override public void onChanged(List singalConfigs) { list.clear(); signalConfiglist.clear(); MyLog.i(TAG,"信号配置发生变化"); for (int i = 0; i < singalConfigs.size(); i++) { SignalConfigRemote signalConfigRemote = new SignalConfigRemote(); signalConfigRemote.setFunc_id(i); signalConfigRemote.setGpio_num(singalConfigs.get(i).getIndex()); signalConfigRemote.setLevel(singalConfigs.get(i).getHighLevel()); list.add(signalConfigRemote); } sendSignalConfigsToRemote(); for (int i = 0; i < singalConfigs.size(); i++) { SingalConfig singalConfig = singalConfigs.get(i); i++; SingalConfig singalConfig1 = singalConfigs.get(i); signalConfiglist .add(new SignalConfigBean(singalConfig.getSignalName(),singalConfig1.getSignalName(),singalConfig.getHighLevel()==1?true:false,singalConfig.getMainBoard()==1?true:false, singalConfig1.getHighLevel()==1?true:false,singalConfig1.getMainBoard()==1?true:false,singalConfig.getIndex(),singalConfig1.getIndex())); mySignalsAdapter.notifyDataSetChanged(); } } }); listView.setAdapter(mySignalsAdapter); } private Gson gson = new Gson(); private void sendSignalConfigsToRemote() { new AsyncTask>( ) { @Override protected List doInBackground(Void... voids) { return signalConfigViewModel.getAllIndexs(); } @Override protected void onPostExecute(List indexs) { if (listContainsSameValue(indexs)){ Log.i(TAG, "sendSignalConfigsToRemote: 有相同的index,不能发送"+gson.toJson(list)); Toast.makeText(_mActivity, "不能有相同的物理所引!", Toast.LENGTH_SHORT).show(); }else{ AYSdk.getInstance().sendCmd(Constant.SEND_CONFIG_SIGNAL,gson.toJson(list)); } } }.execute(); } private boolean listContainsSameValue(List indexs) { for (int i = 0; i < indexs.size(); i++) { //可以默认是0 0不判断是否有相同的index if (indexs.get(i) == 0){ continue; } for (int j=i+1;j