package com.hdl.hdlsdk.device;
|
|
import android.content.Context;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.CompoundButton;
|
import android.widget.Switch;
|
import android.widget.TextView;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
|
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
|
import com.hdl.hdlsdk.DemoBean;
|
import com.hdl.hdlsdk.R;
|
import com.hdl.sdk.common.config.TopicConstant;
|
import com.hdl.sdk.common.exception.HDLLinkException;
|
import com.hdl.sdk.common.utils.IdUtils;
|
import com.hdl.sdk.common.utils.LogUtils;
|
import com.hdl.sdk.common.utils.gson.GsonConvert;
|
import com.hdl.sdk.connect.HDLLink;
|
import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
|
import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
|
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
|
import com.hdl.sdk.connect.config.HDLLinkConfig;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class DevicesListAdapter extends RecyclerView.Adapter<DevicesListAdapter.ViewHolder> {
|
|
private LayoutInflater mInflater;
|
private List<FunctionBean> mList = null;
|
|
public DevicesListAdapter(Context context, List<FunctionBean> devicesList) {
|
this.mInflater = LayoutInflater.from(context);
|
this.mList = devicesList;
|
}
|
|
/**
|
* item显示类型
|
*
|
* @param parent
|
* @param viewType
|
* @return
|
*/
|
@Override
|
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
View view = mInflater.inflate(R.layout.item_devices_list, parent, false);
|
ViewHolder viewHolder = new ViewHolder(view);
|
return viewHolder;
|
}
|
|
/**
|
* 数据的绑定显示
|
*
|
* @param holder
|
* @param position
|
*/
|
@Override
|
public void onBindViewHolder(ViewHolder holder, int position) {
|
holder.item_tv.setText(mList.get(position).getName());
|
holder.device_on_off_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
|
propertyDown(mList.get(position), isChecked);
|
}
|
});
|
}
|
|
@Override
|
public int getItemCount() {
|
return mList.size();
|
}
|
|
//自定义的ViewHolder,持有每个Item的的所有界面元素
|
public static class ViewHolder extends RecyclerView.ViewHolder {
|
public TextView item_tv;
|
public Switch device_on_off_switch;
|
|
public ViewHolder(View view) {
|
super(view);
|
item_tv = (TextView) view.findViewById(R.id.device_title_tv);
|
device_on_off_switch = view.findViewById(R.id.device_on_off_switch);
|
}
|
}
|
|
private void propertyDown(FunctionBean functionBean, Boolean isOn){
|
List<DeviceControlRequest> requestList = new ArrayList<>();
|
DeviceControlRequest request = new DeviceControlRequest();
|
request.setSid(functionBean.getSid());
|
List<DeviceControlRequest.StatusBean> statusBeanList= new ArrayList<>();
|
DeviceControlRequest.StatusBean bean = new DeviceControlRequest.StatusBean();
|
bean.setKey("on_off");
|
bean.setValue(isOn ? "on" : "off");
|
statusBeanList.add(bean);
|
request.setStatus(statusBeanList);
|
requestList.add(request);
|
String time = String.valueOf(System.currentTimeMillis());
|
|
final BaseLocalResponse<List<DeviceControlRequest>> data = new BaseLocalResponse<>();
|
data.setId(IdUtils.getUUId());
|
data.setTime_stamp(time);
|
data.setObjects(requestList);
|
|
String topic = String.format(TopicConstant.PROPERTY_DOWN, HDLLinkConfig.getInstance().getGatewayId());
|
|
HDLLink.getInstance().tcpSendMsg(topic, GsonConvert.getGson().toJson(data));
|
// HDLLink.getInstance().udpSendMsg(topic, GsonConvert.getGson().toJson(data));
|
}
|
}
|