wjc
7 天以前 04fa70b5c61f927e4b5e3c85e9fe9e116d79102e
2025年11月18日17:09:03

备份一下代码
6个文件已添加
12个文件已修改
1 文件已重命名
1322 ■■■■■ 已修改文件
app/src/main/AndroidManifest.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/AppConfigManage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/ConstantManage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/MessageAdapter.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/MessageHouseAdapter.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/MessageBean.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageActivity.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageHouseFragment.java 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/red_message_house_font.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_message.xml 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragement_message_house.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_message.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_message_house.xml 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml
@@ -68,6 +68,12 @@
        android:requestLegacyExternalStorage="true"
        android:supportsRtl="true"
        android:theme="@style/Theme.PhotovoltaicDebug">
        <activity
            android:name=".ui.message.MessageActivity"
            android:exported="false" />
        <activity
            android:name=".ui.message.PowerStationMessageSearchActivity"
            android:exported="false" />
        <activity
            android:name=".ui.me.HelpWebActivity"
            android:exported="false" />
app/src/main/java/com/hdl/photovoltaic/config/AppConfigManage.java
@@ -10,7 +10,7 @@
public class AppConfigManage {
    /*********是否正式服务器*********/
    private static boolean isOnlineServer =true;// UserConfigManage.getInstance().isOnlineServer();
    private static boolean isOnlineServer =false;// UserConfigManage.getInstance().isOnlineServer();
    /*********正式环境*********/
    private static final String APP_KEY_ONLINE = "CSZEMDJL";
    private static final String APP_SECRET_ONLINE = "CSZEMDKBCSZEMDKR";
app/src/main/java/com/hdl/photovoltaic/config/ConstantManage.java
@@ -21,8 +21,8 @@
     * 消息警告解决或者未解决事件
     */
    public static final String message_function_push_post = "message_function_push";
    //消息数量
    public static final String message_count = "message_count";
    //刷新消息住宅
    public static final String refresh_message_house = "refresh_message_house";
    public static final String homepage_title_tab_switch = "homepage_title_tab_switch";
    public static final String home_del = "home_del";
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -20,6 +20,8 @@
    public static final String POST_Message_List = "/home-wisdom/app/powerStation/message/listByPage";
    //消息列表(匹配维修方案)
    public static final String POST_Message_Plan_List = "/home-wisdom/app/powerStation/message/plan/listByPage";
    //消息列表(匹配维修方案)电站纬度
    public static final String POST_Message_Plan_homeListByPage = "/home-wisdom/app/powerStation/message/plan/homeListByPage";
    //获取消息详情
    public static final String POST_Message_Info = "/home-wisdom/app/powerStation/message/info";
    //获取消息详情(匹配维修方案)
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -672,6 +672,88 @@
    }
    /**
     * 获取消息住宅列表
     *
     * @param homeName      电站名称(搜索用的),如果是空字符串默认读取全部
     * @param cloudCallBeak -
     */
    public void getMessageHouseList(String homeName, CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_Plan_homeListByPage;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(homeName)) {
            json.addProperty("homeName", homeName);
        }
        json.addProperty("pageNo", 1);//页码
        json.addProperty("pageSize", 500);//页数
        final List<MessageBean> list = new ArrayList<>();
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String jsonStr) {
                if (TextUtils.isEmpty(jsonStr)) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(new ArrayList<>());
                    }
                    return;
                }
                Gson gson = new Gson();
                MessageListClass oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                list.addAll(oldMessageListClass.getList());
                //总共有多少页
                long totalPage = oldMessageListClass.totalPage;
                if (totalPage < 2) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(list);
                    }
                    return;
                }
                //记录请求条数
                AtomicInteger atomicInteger = new AtomicInteger(0);
                //从第二页获取数据
                for (int i = 2; i <= totalPage; i++) {
                    json.addProperty("pageNo", i);//更新页码
                    HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
                        @Override
                        public void onSuccess(String jsonStr) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            MessageListClass newMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                            list.addAll(newMessageListClass.getList());
                            if (atomicInteger.get() == totalPage - 1) {
                                //最后一条退出
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onSuccess(list);
                                }
                            }
                        }
                        @Override
                        public void onFailure(HDLException e) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            if (atomicInteger.get() == totalPage - 1) {
                                //最后一条退出
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onSuccess(list);
                                }
                            }
                        }
                    });
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    public static class MessageListClass {
        //总条数
app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java
@@ -5,7 +5,6 @@
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Lifecycle;
import android.Manifest;
import android.content.Context;
@@ -17,12 +16,10 @@
import android.os.SystemClock;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.home.type.HomeType;
@@ -48,18 +45,14 @@
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import com.hdl.photovoltaic.ui.bean.OidBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.ui.home.HomePageFragment;
import com.hdl.photovoltaic.ui.me.MeFragment;
import com.hdl.photovoltaic.ui.message.MessageFragment;
import com.hdl.photovoltaic.ui.newC.PowerStationsListActivity;
import com.hdl.photovoltaic.ui.newC.PowerStationsMoveActivity;
import com.hdl.photovoltaic.ui.message.MessageHouseFragment;
import com.hdl.photovoltaic.ui.powerstation.HouseAndDeviceFragment;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.FragmentUtils;
import com.hdl.photovoltaic.utils.GPSManagerUtils;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.utils.SharedPreUtils;
@@ -146,7 +139,7 @@
        //碎片初始化
        HomePageFragment mHomePageFragment = new HomePageFragment();
        HouseAndDeviceFragment mHouseAndDeviceFragment = new HouseAndDeviceFragment();
        MessageFragment mMessageFragment = new MessageFragment();
        MessageHouseFragment mMessageHouseFragment = new MessageHouseFragment();
        MeFragment mMeFragment = new MeFragment();
        if (savedInstanceState != null) {
            //“内存重启”时调用 获取“内存重启”时保存的索引下标
@@ -168,7 +161,7 @@
            }
            fragmentList.add(mHomePageFragment);
            fragmentList.add(mHouseAndDeviceFragment);
            fragmentList.add(mMessageFragment);
            fragmentList.add(mMessageHouseFragment);
            fragmentList.add(mMeFragment);
            this.showFragment();
        }
app/src/main/java/com/hdl/photovoltaic/ui/adapter/MessageAdapter.java
@@ -20,7 +20,9 @@
import java.util.ArrayList;
import java.util.List;
/**
 * 消息适配器
 */
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MyViewHolder> {
app/src/main/java/com/hdl/photovoltaic/ui/adapter/MessageHouseAdapter.java
New file
@@ -0,0 +1,162 @@
package com.hdl.photovoltaic.ui.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.recyclerview.widget.RecyclerView;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.enums.DeviceType;
import com.hdl.photovoltaic.enums.MessageAlarmStateType;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.utils.GlideUtils;
import com.hdl.photovoltaic.utils.TimeUtils;
import java.util.ArrayList;
import java.util.List;
/**
 * 住宅消息适配器
 */
public class MessageHouseAdapter extends RecyclerView.Adapter<MessageHouseAdapter.MyViewHolder> {
    private List<MessageBean> mList;
    private final Context mContext;
    private MessageHouseAdapter.OnClickListener mOnclickListener;//点击了的监听器
    public MessageHouseAdapter(Context context) {
        this.mContext = context;
    }
    @NonNull
    @Override
    public MessageHouseAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_message_house, parent, false);
        return new MessageHouseAdapter.MyViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull MessageHouseAdapter.MyViewHolder holder, int position) {
        MessageBean messageBean = this.mList.get(position);
        GlideUtils.getRoundedCornersImage(mContext, messageBean.getPowerStationImage(), holder.home_image_iv, 6);
        holder.item_home_name_tv.setText(messageBean.getHomeName());
        holder.item_content_tv.setText(messageBean.getTitle());
        String date = TimeUtils.getDataFromTimestamp(messageBean.getCreateTime());
        holder.item_time_tv.setText(date);
        String type = "";//FAULT:故障,WARN:告警,EVENT:提示
        Drawable drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_satte_ffb300);
        if (messageBean.getType().equals(MessageAlarmStateType.fault)) {
            type = mContext.getString(R.string.my_power_station_malfunction);
            drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_state_fff55252);
        } else if (messageBean.getType().equals(MessageAlarmStateType.warn)) {
            type = mContext.getString(R.string.message_alarm);
            drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_satte_ffb300);
        } else if (messageBean.getType().equals(MessageAlarmStateType.event)) {
            type = mContext.getString(R.string.loading_title_tip);
            drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_state_ffb9b9b9);
        }
//        holder.item_estate_tv.setText(type);
        holder.item_estate_tv.setBackground(drawable);
        final Long unreadCount = messageBean.getUnreadCount();
        if (unreadCount == 0) {
            holder.item_unread_message_tv.setVisibility(View.GONE);
        } else {
            holder.item_unread_message_tv.setVisibility(View.VISIBLE);
            if (unreadCount > 99) {
                holder.item_unread_message_tv.setText("99+");
            } else {
                holder.item_unread_message_tv.setText(unreadCount + "");
            }
        }
        //标记索引
        holder.itemView.setTag(position);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mOnclickListener != null) {
                        mOnclickListener.onClick((int) holder.itemView.getTag(), messageBean);
                    }
                } catch (Exception ignored) {
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return mList == null ? 0 : mList.size();
    }
    public void setList(List<MessageBean> newData) {
        if (this.mList == null) {
            this.mList = new ArrayList<>();
        } else {
            this.mList.clear();
        }
        this.mList.addAll(newData);
        notifyDataSetChanged();
    }
    public void setOnclickListener(MessageHouseAdapter.OnClickListener onClickListener) {
        this.mOnclickListener = onClickListener;
    }
    /**
     * 一行布局容器
     */
    static class MyViewHolder extends RecyclerView.ViewHolder {
        public ImageView home_image_iv;
        public TextView item_home_name_tv;
        public TextView item_content_tv;
        public TextView item_time_tv;
        public TextView item_estate_tv;
        public TextView item_unread_message_tv;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            home_image_iv = itemView.findViewById(R.id.home_image_iv);
            item_home_name_tv = itemView.findViewById(R.id.home_name_tv);
            item_content_tv = itemView.findViewById(R.id.item_content_tv);
            item_time_tv = itemView.findViewById(R.id.home_last_date_tv);
            item_estate_tv = itemView.findViewById(R.id.item_estate_tv);
            item_unread_message_tv = itemView.findViewById(R.id.item_unread_message_tv);
        }
    }
    public interface OnClickListener {
        void onClick(int position, MessageBean messageBean);
    }
    /**
     * 通过枚举转换设备类型的字符
     *
     * @param deviceType //设备类型(INV : 逆变器, BMS : BMS控制盒, BATTERY : 电池单元)
     * @return 设备类型
     */
    private String getDeviceTypeStr(String deviceType) {
        switch (deviceType) {
            case DeviceType.inv:
                return mContext.getString(R.string.alarm_all_device_inverter);
            case DeviceType.bms:
                return mContext.getString(R.string.alarm_all_device_bms);
            case DeviceType.battery:
                return mContext.getString(R.string.alarm_all_device_battery_cell);
            default:
                return "";
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/bean/MessageBean.java
@@ -15,10 +15,30 @@
    private String status;//UNTREATED:未处理,PROCESSED:已处理
    private Long createTime=0L;//消息时间(报警时间)
    private String deviceOidId;//设备oid id
    private String deviceOid;//设备oid
    private String deviceDesc;//设备备注
    public String getPowerStationImage() {
        return powerStationImage == null ? "" : powerStationImage;
    }
    public void setPowerStationImage(String powerStationImage) {
        this.powerStationImage = powerStationImage;
    }
    public Long getUnreadCount() {
        return unreadCount;
    }
    public void setUnreadCount(Long unreadCount) {
        this.unreadCount = unreadCount;
    }
    private String powerStationImage;//电站图片
    private Long unreadCount = 0L;//电站未读消息数
    public String getDescription() {
        return description == null ? "" : description;
    }
app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
@@ -131,9 +131,18 @@
    private void initEvent() {
        //电站添加
        //点击进入新配置入网界面
        viewBinding.homePageStationAddIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION_SIMPLE, null);
            }
        });
        //长按进入旧配置入网界面
        viewBinding.homePageStationAddIv.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
//                AddPowerStationDialog addPowerStationDialog = new AddPowerStationDialog(_mActivity);
@@ -160,14 +169,6 @@
//                    }
//                });
            }
        });
        viewBinding.homePageStationAddIv.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION_SIMPLE, null);
                return true;
            }
        });
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageActivity.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -5,39 +5,32 @@
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.gson.Gson;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.databinding.FragmentMessageBinding;
import com.hdl.photovoltaic.enums.FilterType;
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
import com.hdl.photovoltaic.enums.MessageStateType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMessageLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.adapter.MessageAdapter;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.widget.BTypeTitleListDialog;
import com.hdl.photovoltaic.widget.TypeTitleListDialog;
import com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout;
import com.hdl.photovoltaic.widget.refreshlayout.HDLRefreshViewHolder;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -46,16 +39,13 @@
import java.util.List;
import java.util.Map;
/**
 * 消息模块界面
 */
public class MessageFragment extends CustomBaseFragment {
public class MessageActivity extends CustomBaseActivity {
    private FragmentMessageBinding viewBinding;
    private MessageAdapter mMessageAdapter;
    private boolean isAlarmDeviceClick = true;//true表示告警设备被选中,则false表示报警记录被选中
    private MessageBean mMessageBean;
    private final List<MessageBean> mList = new ArrayList<>();
    private boolean isRefreshTotalCount = true;
@@ -82,6 +72,19 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setStatusBarTranslucent();
        getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
        try {
            String json = getIntent().getStringExtra("messageBean");
            mMessageBean = new Gson().fromJson(json, MessageBean.class);
            if (mMessageBean == null) {
                mMessageBean = new MessageBean();
            }
        } catch (Exception ignored) {
            if (mMessageBean == null) {
                mMessageBean = new MessageBean();
            }
        }
        //初始化界面
        initView();
        //初始化监听器
@@ -92,8 +95,14 @@
    }
    private void initEvent() {
        //后退的事件
        viewBinding.topBackLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                HdlCommonLogic.getInstance().postEventBus(ConstantManage.refresh_message_house, ConstantManage.refresh_message_house);
                finish();
            }
        });
        //发生中
        viewBinding.messageTabNascentTitleTv.setOnClickListener(new View.OnClickListener() {
            @Override
@@ -163,8 +172,11 @@
        viewBinding.allClearIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (TextUtils.isEmpty(mMessageBean.getHomeId().replace(" ", ""))) {
                    return;
                }
//                showLoading();
                HdlMessageLogic.getInstance().messageAllRead("", new CloudCallBeak<Boolean>() {
                HdlMessageLogic.getInstance().messageAllRead(mMessageBean.getHomeId(), new CloudCallBeak<Boolean>() {
                    @Override
                    public void onSuccess(Boolean obj) {
//                        hideLoading();
@@ -365,17 +377,7 @@
        if (eventBus == null) {
            return;
        }
        //接收外部点击事件
        if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
            if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                //进来读取一次数据(为了更新currentPage,currentTotal这个值)
//                initData();
                HdlLogLogic.print("正在点击【消息】");
            }
        } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
        if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
            if (eventBus.getType().equals(MessageStateType.untreated)) {
                updateListData();
            }/* else if (eventBus.getType().equals(MessageStateType.processed)) {
@@ -396,7 +398,6 @@
     * @param isClear                 true表示清空缓存
     */
    private void loadNextPageMessageList(
            boolean isShowLoading,
            int pageNo,
            String deviceType_filter_key,
@@ -406,6 +407,9 @@
            String timeType_filter_key,
            String timeType_filter_value,
            boolean isClear) {
        if (TextUtils.isEmpty(mMessageBean.getHomeId().replace(" ", ""))) {
            return;
        }
        if (isClear) {
            //表示从第一页可以读取,默认清空所有缓存数据;
            clearCacheData();
@@ -426,7 +430,7 @@
        } else {
            messageStateType = MessageStateType.processed;
        }
        HdlMessageLogic.getInstance().getPageNoMessageList("", pageNo, messageStateType, deviceType_filter_key, deviceType_filter_value, type_filter_key, type_filter_value, timeType_filter_key, timeType_filter_value, "", new CloudCallBeak<HdlMessageLogic.MessageListClass>() {
        HdlMessageLogic.getInstance().getPageNoMessageList(mMessageBean.getHomeId(), pageNo, messageStateType, deviceType_filter_key, deviceType_filter_value, type_filter_key, type_filter_value, timeType_filter_key, timeType_filter_value, "", new CloudCallBeak<HdlMessageLogic.MessageListClass>() {
            @Override
            public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) {
                if (messageListClass != null) {
@@ -592,7 +596,10 @@
     * 读取消息【未读数量,未处理总数量,已处理总数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount("", new CloudCallBeak<UnCountBean>() {
        if (TextUtils.isEmpty(mMessageBean.getHomeId().replace(" ", ""))) {
            return;
        }
        HdlMessageLogic.getInstance().getMessageUntreatedCount(mMessageBean.getHomeId(), new CloudCallBeak<UnCountBean>() {
            @Override
            public void onSuccess(UnCountBean unCountBean) {
@@ -702,4 +709,11 @@
        }
        return stringList;
    }
    @Override
    public void onBackPressed() {
        HdlCommonLogic.getInstance().postEventBus(ConstantManage.refresh_message_house, ConstantManage.refresh_message_house);
        super.onBackPressed();
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageHouseFragment.java
New file
@@ -0,0 +1,409 @@
package com.hdl.photovoltaic.ui.message;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.gson.Gson;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.databinding.FragementMessageHouseBinding;
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
import com.hdl.photovoltaic.enums.MessageStateType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMessageLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.adapter.MessageAdapter;
import com.hdl.photovoltaic.ui.adapter.MessageHouseAdapter;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils;
import com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout;
import com.hdl.photovoltaic.widget.refreshlayout.HDLRefreshViewHolder;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
public class MessageHouseFragment extends CustomBaseFragment {
    private FragementMessageHouseBinding viewBinding;
    private MessageHouseAdapter mMessageHouseAdapter;
    private boolean isFirstLoading = true;
    private final List<MessageBean> mList = new ArrayList<>();
    @Override
    public Object getContentView() {
        viewBinding = FragementMessageHouseBinding.inflate(getLayoutInflater());
        return viewBinding.getRoot();
    }
    @Override
    public void onBindView(Bundle savedInstanceState) {
        //初始化界面
        initView();
        //初始化监听器
        initEvent();
        //初始化数据
        initData(true);
    }
    /**
     * 获取账号下全部电站消息
     *
     * @param homeName      电站名称(搜索用的),如果是空字符串默认读取全部
     * @param isShowLoading 是否需要加载窗(true=需要,false=不需要)
     */
    private void getMessageHouseList(String homeName, boolean isShowLoading) {
        if (isShowLoading) {
            showLoading();
        }
        HdlMessageLogic.getInstance().getMessageHouseList(homeName, new CloudCallBeak<List<MessageBean>>() {
            @Override
            public void onSuccess(List<MessageBean> list) {
                isFirstLoading = false;
                if (isShowLoading) {
                    hideLoading();
                }
                mList.clear();
                if (list != null && !list.isEmpty()) {
                    mList.addAll(list);
                }
                updateRecyclerViewList();
            }
            @Override
            public void onFailure(HDLException e) {
                if (isShowLoading) {
                    hideLoading();
                }
            }
        });
    }
    /**
     * 获取账号下全部电站消息
     *
     * @param homeId        消息id(不传已读所有电站的,传值已读指定电站的)
     * @param isShowLoading 是否需要加载窗(true=需要,false=不需要)
     */
    private void messageAllRead(String homeId, boolean isShowLoading) {
        if (isShowLoading) {
            showLoading();
        }
        HdlMessageLogic.getInstance().messageAllRead(homeId, new CloudCallBeak<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                if (isShowLoading) {
                    hideLoading();
                }
                if (!mList.isEmpty()) {
                    for (int i = 0; i < mList.size(); i++) {
                        MessageBean messageBean = mList.get(i);
                        messageBean.setUnreadCount(0L);
                    }
                    updateRecyclerViewList();
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (isShowLoading) {
                    hideLoading();
                }
            }
        });
    }
    /**
     * 读取消息【未读数量,未处理总数量,已处理总数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount("", new CloudCallBeak<UnCountBean>() {
            @Override
            public void onSuccess(UnCountBean unCountBean) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        if (unCountBean == null) {
                            return;
                        }
                        refreshUnreadCount(unCountBean.getUnreadCount());
                    }
                });
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                        if (textView != null) {
                            textView.setVisibility(View.GONE);
                        }
                    }
                });
            }
        });
    }
    private void initData(boolean isShowLoading) {
        this.getMessageHouseList("", isShowLoading);
        this.getUnreadCount();
    }
    private void initEvent() {
        //搜索
        viewBinding.powerStationSearchEt.addTextChangedListener(powerStationSearchWatcher);
        //清除搜索文案
        viewBinding.powerStationClearIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.powerStationSearchEt.setText("");
                viewBinding.powerStationClearIv.setVisibility(View.GONE);
                getMessageHouseList("", false);
            }
        });
        //全部已读
        viewBinding.powerStationReadIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                messageAllRead("", true);
                refreshUnreadCount(0);
            }
        });
        if (mMessageHouseAdapter != null) {
            mMessageHouseAdapter.setOnclickListener(new MessageHouseAdapter.OnClickListener() {
                @Override
                public void onClick(int position, MessageBean messageBean) {
                    Intent intent = new Intent();
                    intent.putExtra("messageBean", new Gson().toJson(messageBean));
                    intent.setClass(_mActivity, MessageActivity.class);
                    startActivity(intent);
                }
            });
        }
    }
    /**
     * 重新更新列表数据
     */
    private void updateRecyclerViewList() {
        if (mMessageHouseAdapter == null) {
            return;
        }
        mMessageHouseAdapter.setList(mList);
        nullDataUpdateUi();
    }
    /**
     * 刷新【消息模块】下角标数值
     *
     * @param unreadCount 未读信息数量总数
     */
    private void refreshUnreadCount(int unreadCount) {
        HdlThreadLogic.runMainThread(new Runnable() {
            @SuppressLint("SetTextI18n")
            @Override
            public void run() {
                TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                if (textView != null) {
                    if (unreadCount == 0) {
                        textView.setVisibility(View.GONE);
                    } else {
                        textView.setVisibility(View.VISIBLE);
                        if (unreadCount > 99) {
                            textView.setText("99+");
                        } else {
                            textView.setText(unreadCount + "");
                        }
                    }
                }
            }
        });
    }
    /**
     * 没有消息列表的样式
     */
    private void nullDataUpdateUi() {
        HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.deviceNullDataIc.getRoot(), viewBinding.deviceNullDataIc.nullDataGifAnimationIv, viewBinding.deviceNullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0);
    }
    private void initView() {
        mMessageHouseAdapter = new MessageHouseAdapter(_mActivity);
        viewBinding.houseListRcv.setLayoutManager(new LinearLayoutManager(_mActivity));
        viewBinding.houseListRcv.setAdapter(mMessageHouseAdapter);
        this.pullToRefresh();
        //在界面中使用
        KeyboardStateObserverUtils.getKeyboardStateObserver(_mActivity).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() {
            @Override
            public void onKeyboardShow(int h) {
                //Toast.makeText(MainActivity.this,"键盘弹出",Toast.LENGTH_SHORT).show();
//                viewBinding.messageSearchEt.requestFocus();
            }
            @Override
            public void onKeyboardHide(int h) {
                viewBinding.powerStationSearchEt.clearFocus();
            }
        });
    }
    /**
     * 下拉刷新的逻辑
     */
    protected void pullToRefresh() {
        viewBinding.houseListRbl.setDelegate(new BGARefreshLayout.BGARefreshLayoutDelegate() {
            @SuppressLint("StaticFieldLeak")
            @Override
            public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout) {
                new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... params) {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
                    @Override
                    protected void onPostExecute(Void aVoid) {
                        // 执行任务(如更新UI、跳转等)
                        viewBinding.houseListRbl.endRefreshing();
                        initData(false);
                    }
                }.execute();
            }
            @SuppressLint("StaticFieldLeak")
            @Override
            public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout) {
                new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... params) {
                        try {
                            Thread.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
                    @Override
                    protected void onPostExecute(Void aVoid) {
                        viewBinding.houseListRbl.endLoadingMore();
                        //加载最新数据完成
                    }
                }.execute();
                return true;
            }
        });
        HDLRefreshViewHolder hdlRefreshViewHolder = new HDLRefreshViewHolder(_mActivity, true);
        hdlRefreshViewHolder.setPullDownImageResource(R.mipmap.loading_44);
        hdlRefreshViewHolder.setChangeToReleaseRefreshAnimResId(R.drawable.loading_refresh);
        hdlRefreshViewHolder.setRefreshingAnimResId(R.drawable.loading_refresh_end);
        viewBinding.houseListRbl.setRefreshViewHolder(hdlRefreshViewHolder);
    }
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void onEventMessage(BaseEventBus eventBus) {
        super.onEventMessage(eventBus);
        if (eventBus == null) {
            return;
        }
        //接收外部点击事件
        if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
            if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                HdlLogLogic.print("正在点击【消息】");
                //第二次进来不显示加载框
                if (!isFirstLoading) {
                    initData(false);
                }
            }
        } else if (eventBus.getTopic().equals(ConstantManage.refresh_message_house)) {
            // 取消粘性事件
            EventBus.getDefault().removeStickyEvent(eventBus);
            //第二次进来不显示加载框
            if (!isFirstLoading) {
                initData(false);
            }
        }
    }
    /**
     *
     */
    private final TextWatcher powerStationSearchWatcher = 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) {
            //搜索关键字
            String currSearchText = s.toString().replace(" ", "");
            if (TextUtils.isEmpty(currSearchText)) {
                viewBinding.powerStationClearIv.setVisibility(View.GONE);
//                HdlThreadLogic.toast(_mActivity, R.string.search_content_null);
                return;
            }
            viewBinding.powerStationClearIv.setVisibility(View.VISIBLE);
            viewBinding.powerStationSearchEt.clearFocus();
            getMessageHouseList(currSearchText, false);
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    };
    @Override
    public void onDestroy() {
        super.onDestroy();
        viewBinding.powerStationSearchEt.removeTextChangedListener(powerStationSearchWatcher);
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java
@@ -220,9 +220,18 @@
        });
        //电站添加
        //点击进入新配置入网界面
        viewBinding.addIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION_SIMPLE, null);
            }
        });
        //长按进入旧配置入网界面
        viewBinding.addIv.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
//                AddPowerStationDialog addPowerStationDialog = new AddPowerStationDialog(_mActivity);
@@ -231,8 +240,8 @@
//                addPowerStationDialog.setItemOnclickListener(new PowerStationDialogAdapter.OnclickListener() {
//                    @Override
//                    public void onClick(int position, String str) {
////                        debugging_str = str;
//                        addPowerStationDialog.dismiss();
//
////                        UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
////                        if (_mActivity.getString(R.string.simple_debugging).equals(str)) {
////                            HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION_SIMPLE, null);
@@ -249,16 +258,12 @@
//                    }
//                });
            }
        });
        viewBinding.addIv.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(1);
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION_SIMPLE, null);
                return true;
            }
        });
        //电站搜索
        viewBinding.powerStationSearchClickCl.setOnClickListener(new View.OnClickListener() {
            @Override
app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
@@ -157,6 +157,27 @@
        return "";
    }
    /**
     * 时间戳转日期(格式:MM-dd)
     *
     * @param timestamp 时间戳
     *                  ¬     * @return -
     */
    public static String getDataFromTimestamp(long timestamp) {
        try {
            String pattern = "MM-dd";
            if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) {
                pattern = "dd-MM";
            }
            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, getLocale());
            Date date = new Date(timestamp);
            return dateFormat.format(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 时间戳转时间(格式:yyyy-MM-dd HH:mm:ss)
app/src/main/res/drawable/red_message_house_font.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFF55252" />
    <corners android:radius="10.5dp" />
</shape>
app/src/main/res/layout/activity_message.xml
New file
@@ -0,0 +1,244 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/message_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/text_FF000000">
<!--头部标签-->
<RelativeLayout
    android:id="@+id/message_rl"
    android:layout_width="match_parent"
    android:layout_height="@dimen/dp_44"
    android:layout_marginStart="@dimen/dp_16"
    android:layout_marginTop="@dimen/dp_38"
    android:layout_marginEnd="@dimen/dp_16"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">
    <TextView
        android:id="@+id/message_tab_nascent_title_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="@string/message_nascent"
        android:textColor="@color/text_FFACACAC"
        android:textSize="@dimen/text_18" />
    <TextView
        android:id="@+id/message_tab_recover_title_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="36dp"
        android:layout_toEndOf="@+id/message_tab_nascent_title_tv"
        android:text="@string/alarm_record"
        android:textColor="@color/text_FF5B5B5B"
        android:textSize="@dimen/text_14" />
    <ImageView
        android:id="@+id/all_clear_iv"
        android:layout_width="@dimen/dp_33"
        android:layout_height="@dimen/dp_33"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="@dimen/dp_5"
        android:src="@drawable/clear_all" />
</RelativeLayout>
<LinearLayout
    android:id="@+id/message_cl"
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:layout_marginTop="@dimen/dp_10"
    android:orientation="vertical"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/message_rl">
    <!--搜索-->
    <RelativeLayout
        android:id="@+id/message_search_cl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_35"
        android:layout_marginStart="@dimen/dp_13"
        android:layout_marginEnd="@dimen/dp_16"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <RelativeLayout
            android:id="@+id/message_search_click_cl"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentEnd="true"
            android:layout_marginEnd="@dimen/dp_17"
            android:background="@drawable/search_bj_ff1c1c1e">
            <ImageView
                android:id="@+id/power_station_search_iv"
                android:layout_width="@dimen/dp_18"
                android:layout_height="@dimen/dp_18"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_13"
                android:src="@drawable/search_path" />
            <TextView
                android:id="@+id/power_station_search_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_11"
                android:layout_toEndOf="@+id/power_station_search_iv"
                android:text="@string/enter_alarm_name"
                android:textColor="@color/text_FF5B5B5B"
                android:textSize="@dimen/text_14" />
        </RelativeLayout>
    </RelativeLayout>
    <!--条件筛选-->
    <LinearLayout
        android:id="@+id/message_tab_ll"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_22"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginTop="@dimen/dp_20"
        android:layout_marginEnd="@dimen/dp_16"
        android:orientation="horizontal">
        <!--全部设备-->
        <LinearLayout
            android:id="@+id/message_tab_all_device_cl"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/all_device_title_tv"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/dp_20"
                android:text="@string/alarm_all_device"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_14" />
            <View
                android:layout_width="@dimen/dp_5"
                android:layout_height="match_parent" />
            <ImageView
                android:id="@+id/all_device_title_iv"
                android:layout_width="@dimen/dp_10"
                android:layout_height="@dimen/dp_10"
                android:layout_marginStart="@dimen/dp_0"
                android:background="@drawable/down" />
        </LinearLayout>
        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <!--全部等级-->
        <LinearLayout
            android:id="@+id/message_tab_all_grade_cl"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/all_grade_title_tv"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/dp_20"
                android:text="@string/alarm_all_grade"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_14" />
            <View
                android:layout_width="5dp"
                android:layout_height="match_parent" />
            <ImageView
                android:id="@+id/all_grade_title_iv"
                android:layout_width="@dimen/dp_10"
                android:layout_height="@dimen/dp_10"
                android:layout_marginStart="@dimen/dp_0"
                android:background="@drawable/down" />
        </LinearLayout>
        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <!--全部时间-->
        <LinearLayout
            android:id="@+id/message_tab_all_time_cl"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical|end"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/all_time_title_tv"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/dp_20"
                android:text="@string/alarm_all_time"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_14" />
            <View
                android:layout_width="@dimen/dp_5"
                android:layout_height="match_parent" />
            <ImageView
                android:id="@+id/all_time_title_iv"
                android:layout_width="@dimen/dp_10"
                android:layout_height="@dimen/dp_10"
                android:background="@drawable/down" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
<com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout
    android:id="@+id/message_srl"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginTop="@dimen/dp_10"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/message_cl">
    <!-- android:clipToPadding="false"
        android:paddingBottom="@dimen/dp_16"
        底部间距
        -->
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/message_rcv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:paddingBottom="@dimen/dp_10"
        />
</com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout>
<!--没有数据显示样式-->
<include
    android:id="@+id/null_data_ic"
    layout="@layout/null_data_view"
    android:layout_width="match_parent"
    android:layout_height="224dp"
    android:visibility="gone"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/message_cl" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/fragement_message_house.xml
New file
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/text_FF000000">
    <!--搜索-->
    <RelativeLayout
        android:id="@+id/power_station_search_cl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_44"
        android:layout_marginTop="@dimen/dp_48"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginStart="@dimen/dp_16"
            android:layout_marginTop="4.5dp"
            android:layout_marginEnd="@dimen/dp_16"
            android:layout_marginBottom="4.5dp"
            android:layout_toStartOf="@+id/power_station_read_iv"
            android:background="@drawable/search_bj_ff1c1c1e">
            <ImageView
                android:id="@+id/power_station_search_iv"
                android:layout_width="@dimen/dp_18"
                android:layout_height="@dimen/dp_18"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_13"
                android:src="@drawable/search_path" />
            <EditText
                android:id="@+id/power_station_search_et"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_11"
                android:layout_marginEnd="@dimen/dp_40"
                android:layout_toEndOf="@+id/power_station_search_iv"
                android:background="@null"
                android:gravity="start|center_vertical"
                android:hint="@string/search_station"
                android:textColor="@color/text_FFACACAC"
                android:textColorHint="@color/text_FF5B5B5B"
                android:textSize="@dimen/text_14" />
            <ImageView
                android:id="@+id/power_station_clear_iv"
                android:layout_width="@dimen/dp_20"
                android:layout_height="@dimen/dp_20"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginEnd="@dimen/dp_13"
                android:src="@drawable/clear"
                android:visibility="gone" />
        </RelativeLayout>
        <ImageView
            android:id="@+id/power_station_read_iv"
            android:layout_width="@dimen/dp_33"
            android:layout_height="@dimen/dp_33"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginEnd="@dimen/dp_21"
            android:src="@drawable/clear_all" />
    </RelativeLayout>
    <!--住宅列表消息-->
    <com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout
        android:id="@+id/house_list_rbl"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="10dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/power_station_search_cl">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/house_list_rcv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipToPadding="false"
            android:paddingTop="@dimen/dp_10"
            />
    </com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout>
    <!--没有数据显示样式-->
    <include
        android:id="@+id/device_null_data_ic"
        layout="@layout/null_data_view"
        android:layout_width="match_parent"
        android:layout_height="224dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/power_station_search_cl" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/fragment_message.xml
@@ -10,12 +10,29 @@
        android:id="@+id/message_rl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_44"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginTop="@dimen/dp_38"
        android:layout_marginEnd="@dimen/dp_16"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <!--1.返回按钮 增大点击区域-->
        <LinearLayout
            android:id="@+id/top_back_ll"
            android:layout_width="@dimen/dp_56"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <ImageView
                android:id="@+id/top_left_iv"
                android:layout_width="@dimen/dp_30"
                android:layout_height="@dimen/dp_30"
                android:layout_gravity="center"
                android:layout_marginStart="@dimen/dp_10"
                android:scaleType="centerInside"
                android:src="@drawable/back" />
        </LinearLayout>
        <TextView
            android:id="@+id/message_tab_nascent_title_tv"
@@ -24,7 +41,9 @@
            android:layout_centerVertical="true"
            android:text="@string/message_nascent"
            android:textColor="@color/text_FFACACAC"
            android:textSize="@dimen/text_18" />
            android:textSize="@dimen/text_18"
            android:layout_toEndOf="@+id/top_back_ll"
            />
        <TextView
            android:id="@+id/message_tab_recover_title_tv"
@@ -225,8 +244,7 @@
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipToPadding="false"
            android:paddingBottom="@dimen/dp_10"
            />
            android:paddingBottom="@dimen/dp_10" />
    </com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout>
    <!--没有数据显示样式-->
app/src/main/res/layout/item_message_house.xml
New file
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="76dp">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="66dp"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginEnd="@dimen/dp_16"
        android:background="@drawable/bj_ff1c1c1e">
        <ImageView
            android:id="@+id/home_image_iv"
            android:layout_width="44dp"
            android:layout_height="42dp"
            android:layout_marginStart="@dimen/dp_16"
            android:layout_marginTop="@dimen/dp_12"
            android:scaleType="centerCrop"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
        <LinearLayout
            android:id="@+id/home_name_ll"
            android:layout_width="0dp"
            android:layout_height="@dimen/dp_20"
            android:layout_marginStart="@dimen/dp_24"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/home_image_iv"
            app:layout_constraintTop_toTopOf="@+id/home_image_iv">
            <TextView
                android:id="@+id/home_name_tv"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:ellipsize="end"
                android:gravity="center_vertical|start"
                android:singleLine="true"
                android:text="@string/power_station"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_14" />
            <TextView
                android:id="@+id/home_last_date_tv"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:ellipsize="end"
                android:gravity="center_vertical|end"
                android:paddingStart="4dp"
                android:paddingEnd="@dimen/dp_16"
                android:singleLine="true"
                android:text="@string/power_station"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_12" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="21dp"
            android:layout_marginStart="@dimen/dp_11"
            android:layout_marginTop="4.5dp"
            android:gravity="center_vertical"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/home_image_iv"
            app:layout_constraintTop_toBottomOf="@+id/home_name_ll">
            <TextView
                android:id="@+id/item_estate_tv"
                android:layout_width="7dp"
                android:layout_height="7dp"
                android:background="@drawable/device_state_ffb9b9b9" />
            <TextView
                android:id="@+id/item_content_tv"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:ellipsize="end"
                android:gravity="center_vertical|start"
                android:paddingStart="6dp"
                android:paddingEnd="5dp"
                android:singleLine="true"
                android:textColor="@color/text_FFACACAC"
                android:textSize="@dimen/text_12" />
            <!--未读标签-->
            <TextView
                android:id="@+id/item_unread_message_tv"
                android:layout_width="21dp"
                android:layout_height="21dp"
                android:gravity="center"
                android:layout_marginEnd="@dimen/dp_16"
                android:background="@drawable/red_message_house_font"
                android:textColor="@color/text_FFFFFFFF"
                android:textSize="12sp" />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>