wjc
2024-12-03 4c111f5659d7e8872ad91316127326de9a9f6162
app/src/main/java/com/hdl/photovoltaic/ui/me/TemperatureUnitActivity.java
@@ -5,11 +5,19 @@
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;
@@ -22,7 +30,8 @@
    private ActivityTemperatureUnitBinding viewBinding;
    private LanguageAdapter languageAdapter;
    private List<LanguageAdapter.ItemData> list;
    private List<LanguageAdapter.ItemData> mList;
    @Override
    public Object getContentView() {
@@ -32,8 +41,7 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setNotificationBarBackgroundColor(CustomColor.white);
        setStatusBarTextColor();
        setStatusBarTranslucent();
        readData();
        //初始化
        initView();
@@ -44,34 +52,35 @@
    }
    private void readData() {
        list = new ArrayList<>();
        mList = new ArrayList<>();
        LanguageAdapter.ItemData c = new LanguageAdapter.ItemData();
        c.setState(false);
        c.setTitle(getString(R.string.set_c));
        c.setUnit("℃");
        list.add(c);
        mList.add(c);
        LanguageAdapter.ItemData f = new LanguageAdapter.ItemData();
        f.setState(false);
        f.setTitle(getString(R.string.set_f));
        f.setUnit("℉");
        list.add(f);
        for (int i = 0; i < list.size(); i++) {
            LanguageAdapter.ItemData itemData = list.get(i);
        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.toolbarTopFragmentHouseListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
        viewBinding.toolbarTopRl.topBackLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(40);
                backPressedData();
                finish();
            }
        });
@@ -79,16 +88,21 @@
        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());
                for (int i = 0; i < list.size(); i++) {
                    LanguageAdapter.ItemData data = list.get(i);
                    data.setState(false);
                } catch (Exception e) {
                    HdlLogLogic.print(e.getMessage(), false);
                }
                list.get(position).setState(true);
                languageAdapter.notifyDataSetChanged();
                UserConfigManage.getInstance().setTemperature_unit(itemData.getUnit());
                UserConfigManage.getInstance().Save();
            }
        });
@@ -96,13 +110,65 @@
    private void initView() {
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setText(R.string.set_temperature_unit);
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setTextColor(getResources().getColor(R.color.text_030D1C, null));
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null));
        viewBinding.toolbarTopRl.topTitleTv.setText(R.string.set_temperature_unit);
        viewBinding.toolbarTopRl.topBackLl.setVisibility(View.VISIBLE);
        LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity);
        languageAdapter = new LanguageAdapter(this.list, _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<Boolean>() {
            @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);
    }
}