package com.hdl.photovoltaic.ui.me; import androidx.recyclerview.widget.LinearLayoutManager; import android.os.Bundle; import android.view.View; import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityTemperatureUnitBinding; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.other.HdlUniLogic; import com.hdl.photovoltaic.ui.adapter.LanguageAdapter; import com.hdl.photovoltaic.uni.HDLUniMP; import java.util.ArrayList; import java.util.List; /** * 温度单位的界面 */ public class TemperatureUnitActivity extends CustomBaseActivity { private ActivityTemperatureUnitBinding viewBinding; private LanguageAdapter languageAdapter; private List mList; @Override public Object getContentView() { viewBinding = ActivityTemperatureUnitBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { setStatusBarTranslucent(); getWindow().setNavigationBarColor(getColor(R.color.text_FF000000)); readData(); //初始化 initView(); //初始化界面监听器 initEvent(); } private void readData() { mList = new ArrayList<>(); LanguageAdapter.ItemData c = new LanguageAdapter.ItemData(); c.setState(false); c.setTitle(getString(R.string.set_c)); c.setUnit("℃"); mList.add(c); LanguageAdapter.ItemData f = new LanguageAdapter.ItemData(); f.setState(false); f.setTitle(getString(R.string.set_f)); f.setUnit("℉"); mList.add(f); for (int i = 0; i < mList.size(); i++) { LanguageAdapter.ItemData itemData = mList.get(i); if (itemData.getUnit().equals(UserConfigManage.getInstance().getTemperature_unit())) { //初始化之前状态 itemData.setState(true); } } } private void initEvent() { viewBinding.toolbarTopRl.topBackLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { backPressedData(); finish(); } }); languageAdapter.setNoOnclickListener(new LanguageAdapter.OnclickListener() { @Override public void onClick(int position, LanguageAdapter.ItemData itemData) { try { if (position < 0 || position > mList.size()) { return; } for (int i = 0; i < mList.size(); i++) { LanguageAdapter.ItemData data = mList.get(i); data.setState(false); } mList.get(position).setState(true); languageAdapter.notifyDataSetChanged(); setResidenceTemperatureUnit(itemData.getUnit()); } catch (Exception e) { HdlLogLogic.print(e.getMessage(), false); } } }); } private void initView() { viewBinding.toolbarTopRl.topTitleTv.setText(R.string.set_temperature_unit); viewBinding.toolbarTopRl.topBackLl.setVisibility(View.VISIBLE); LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity); languageAdapter = new LanguageAdapter(this.mList, _mActivity); viewBinding.languageRc.setLayoutManager(linearLayout); viewBinding.languageRc.setAdapter(languageAdapter); } /** * 配置住宅温度单位 * * @param unit 单位 */ private void setResidenceTemperatureUnit(String unit) { if (UserConfigManage.getInstance().getTemperature_unit().equals(unit)) { return; } String tempType = "C"; if (unit.contains("℃")) { tempType = "C"; } else { tempType = "F"; } HdlResidenceLogic.getInstance().setResidenceTemperatureUnit(tempType, new CloudCallBeak() { @Override public void onSuccess(Boolean obj) { UserConfigManage.getInstance().setTemperature_unit(unit); UserConfigManage.getInstance().Save(); } @Override public void onFailure(HDLException e) { HdlThreadLogic.toast(_mActivity, e); } }); } /** * 物理按键返回事件 */ @Override public void onBackPressed() { backPressedData(); super.onBackPressed(); } /** * 返回给上一级界面数据 */ private void backPressedData() { setResult(40); //通知给小程序更新温度单位 HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("temperature_unit", UserConfigManage.getInstance().getTemperature_unit()); uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_TEMPERATURE); uniCallBackBaseBean.setData(jsonObject); HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); } }