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<SignalConfigBean> signalConfiglist =new ArrayList<>();
|
List<SignalConfigRemote> 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<List<SingalConfig>>() {
|
@Override
|
public void onChanged(List<SingalConfig> 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);
|
}
|
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 class MySignalsAdapter extends BaseAdapter{
|
private Context context;
|
|
|
public MySignalsAdapter(Context context) {
|
this.context = context;
|
}
|
|
@Override
|
public int getCount() {
|
return signalConfiglist.size();
|
}
|
|
@Override
|
public SignalConfigBean getItem(int position) {
|
return signalConfiglist.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
final ViewHolder viewHolder;
|
if (convertView == null){
|
convertView = LayoutInflater.from(context).inflate(R.layout.layout_signal_conf_item,null);
|
viewHolder = new ViewHolder(convertView);
|
|
|
|
viewHolder.checkBox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox3.getTag();
|
|
signalConfigBean.setThree(isChecked);
|
signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2+1);
|
|
}
|
});
|
viewHolder.checkBox4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox4.getTag();
|
signalConfigBean.setFour(isChecked);
|
|
}
|
});viewHolder.checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox2.getTag();
|
signalConfigBean.setTwo(isChecked);
|
}
|
});viewHolder.checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox1.getTag();
|
signalConfigBean.setOne(isChecked);
|
signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2);
|
|
}
|
});
|
convertView.setTag(viewHolder);
|
viewHolder.checkBox1.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox2.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox3.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox4.setTag(signalConfiglist.get(position));
|
}else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
viewHolder.checkBox1.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox2.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox3.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox4.setTag(signalConfiglist.get(position));
|
}
|
viewHolder.editText1.setTag(position*2);
|
viewHolder.editText2.setTag((position*2+1));
|
|
|
|
final SignalConfigBean signalConfigItem = getItem(position);
|
viewHolder.textView1.setText(signalConfigItem.getSignal_name_first());
|
viewHolder.textView2.setText(signalConfigItem.getSignal_name_second());
|
|
|
viewHolder.editText1.setText(String.valueOf(signalConfigItem.getPort_one()));
|
viewHolder.editText2.setText(String.valueOf(signalConfigItem.getPort_two()));
|
|
viewHolder.checkBox1.setChecked(signalConfigItem.isOne());
|
viewHolder.checkBox2.setChecked(signalConfigItem.isTwo());
|
viewHolder.checkBox3.setChecked(signalConfigItem.isThree());
|
viewHolder.checkBox4.setChecked(signalConfigItem.isFour());
|
return convertView;
|
}
|
|
|
class ViewHolder{
|
CheckBox checkBox1;
|
CheckBox checkBox2;
|
CheckBox checkBox3;
|
CheckBox checkBox4;
|
EditText editText1;
|
EditText editText2;
|
TextView textView1;
|
TextView textView2;
|
|
|
public ViewHolder(final View convertView) {
|
checkBox1 = convertView.findViewById(R.id.signal_check_1);
|
checkBox2 = convertView.findViewById(R.id.signal_check_2);
|
checkBox3 = convertView.findViewById(R.id.signal_check_3);
|
checkBox4 = convertView.findViewById(R.id.signal_check_4);
|
|
editText1 = convertView.findViewById(R.id.et_signal1_port);
|
editText2 = convertView.findViewById(R.id.et_signal2_port);
|
editText1.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
|
editText2.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
|
editText1.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
editText2.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
editText1.setSingleLine();
|
editText2.setSingleLine();
|
|
|
editText1.addTextChangedListener(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) {
|
int pos = (int) editText1.getTag();
|
String str = s.toString();
|
if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){
|
int a = Integer.parseInt(str);
|
if (a== list.get(pos).getGpio_num()){
|
|
}else{
|
handler.removeMessages(INDEX);
|
Message message = Message.obtain();
|
message.what = INDEX;
|
message.arg1 = pos;
|
message.arg2 = a;
|
handler.sendMessageDelayed(message,1500);
|
}
|
}
|
}
|
});
|
editText2.addTextChangedListener(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) {
|
int pos = (int) editText2.getTag();
|
String str = s.toString();
|
if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){
|
int a = Integer.parseInt(str);
|
if (a== list.get(pos).getGpio_num()){
|
|
}else{
|
handler.removeMessages(INDEX);
|
Message message = Message.obtain();
|
message.what = INDEX;
|
message.arg1 = pos;
|
message.arg2 = a;
|
handler.sendMessageDelayed(message,1500);
|
}
|
|
}
|
}
|
});
|
|
|
|
textView1 = convertView.findViewById(R.id.tv_signal_1);
|
textView2 = convertView.findViewById(R.id.tv_signal_2);
|
}
|
}
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
Log.i(TAG, "onResume: ");
|
|
}
|
|
@Override
|
public void onStop() {
|
super.onStop();
|
Log.i(TAG, "onStop: ");
|
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
Log.i(TAG, "onPause: ");
|
}
|
}
|