From d0e49b8c045e09e96cc875b27033b4bfcf07438f Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 29 四月 2025 20:50:37 +0800
Subject: [PATCH] 2025年04月29日20:50:35

---
 app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java |  758 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 611 insertions(+), 147 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
index 81c37bc..2f63d48 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -1,25 +1,40 @@
 package com.hdl.photovoltaic.ui.message;
 
+import android.annotation.SuppressLint;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.SystemClock;
 import android.view.View;
+import android.widget.TextView;
 
 
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
+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.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.MessageFunctionTabSwitch;
 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.ui.bean.BUserInfo;
+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;
@@ -27,21 +42,37 @@
 import org.greenrobot.eventbus.ThreadMode;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
- * 娑堟伅
+ * 娑堟伅妯″潡鐣岄潰
  */
 public class MessageFragment extends CustomBaseFragment {
 
     private FragmentMessageBinding viewBinding;
 
-    //褰撳墠鏄剧ず鐨刦ragment
-    private static final String CURRENT_FRAGMENT = "state_fragment_show";
-    private FragmentManager mFragmentManager;
-    private Fragment currentFragment = new Fragment();
-    private final List<Fragment> fragmentList = new ArrayList<>();
-    private int currentIndex = 0;
+    private MessageAdapter mMessageAdapter;
+    private boolean isAlarmDeviceClick = true;//true琛ㄧず鍛婅璁惧琚�変腑,鍒檉alse琛ㄧず鎶ヨ璁板綍琚�変腑
+
+    private final List<MessageBean> mList = new ArrayList<>();
+
+    private boolean isRefreshTotalCount = true;
+    private int mTotalCount = 0; //鎬绘潯鏁�
+    private int mCurrentPage = 0; // 褰撳墠椤电爜
+    private int mCurrentTotal = 0; // 鎬婚〉鐮�
+    private String mDeviceTypeFilterKye = FilterType.deviceType;//杩囨护绫诲瀷 deviceType锛圛NV 锛氶�嗗彉鍣紱BMS 锛欱MS鎺у埗鐩掞紱BATTERY 锛氱數姹犲崟鍏冿紱"LOAD_CENTRE"锛氳礋杞芥帶鍒朵腑蹇冿級
+    private String mDeviceTypeFilterValue = FilterType.all;//杩囨护绫诲瀷鍊� deviceType锛圛NV 锛氶�嗗彉鍣紱BMS 锛欱MS鎺у埗鐩掞紱BATTERY 锛氱數姹犲崟鍏冿紱"LOAD_CENTRE"锛氳礋杞芥帶鍒朵腑蹇�
+
+    private String mTypeFilterKye = FilterType.all;//杩囨护绫诲瀷 type锛團AULT 锛氭晠闅滐紱 WARN 锛氬憡璀︼紱 EVENT 锛氫簨浠�(鎻愮ず)锛夛紱
+    private String mTypeFilterValue = FilterType.all;//杩囨护绫诲瀷鍊� type锛團AULT 锛氭晠闅滐紱 WARN 锛氬憡璀︼紱 EVENT 锛氫簨浠�(鎻愮ず)锛夛紱
+
+    private String mTimeTypeFilterKye = FilterType.all;//杩囨护绫诲瀷  timeType锛圱ODAY 锛氫粖澶╋紱LAST_3_DAYS: 杩�3澶╋紱LAST_7_DAYS 锛氳繎7澶╋紱LAST_30_DAYS 锛氳繎30澶╋級锛�
+    private String mTimeTypeFilterValue = FilterType.all;//杩囨护绫诲瀷鍊�  timeType锛圱ODAY 锛氫粖澶╋紱LAST_3_DAYS: 杩�3澶╋紱LAST_7_DAYS 锛氳繎7澶╋紱LAST_30_DAYS 锛氳繎30澶╋級锛�
+
+
+    private boolean isLoadingMore = false; // 鏍囪姝e湪鍔犺浇鏇村鏁版嵁
 
     @Override
     public Object getContentView() {
@@ -51,165 +82,282 @@
 
     @Override
     public void onBindView(Bundle savedInstanceState) {
-
-        //鍒濆鍖栫鐗�
-        initFragment(savedInstanceState);
         //鍒濆鍖栫晫闈�
         initView();
         //鍒濆鍖栫洃鍚櫒
         initEvent();
         //鍒濆鍖栨暟鎹�
         initData();
+
     }
 
     private void initEvent() {
 
+
         //鍙戠敓涓�
-        viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() {
+        viewBinding.messageTabNascentTitleTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                currentIndex = 0;
-                initView();
-                showFragment();
-                postEventBus(MessageFunctionTabSwitch.nascent);
-
+                if (isAlarmDeviceClick) {
+                    return;
+                }
+                mDeviceTypeFilterKye = FilterType.deviceType;
+                mDeviceTypeFilterValue = FilterType.all;
+                mTypeFilterKye = FilterType.all;
+                mTypeFilterValue = FilterType.all;
+                mTimeTypeFilterKye = FilterType.all;
+                mTimeTypeFilterValue = FilterType.all;
+                viewBinding.allDeviceTitleTv.setText(getString(R.string.alarm_all_device));
+                viewBinding.allGradeTitleTv.setText(getString(R.string.alarm_all_grade));
+                viewBinding.allTimeTitleTv.setText(getString(R.string.alarm_all_time));
+                isAlarmDeviceClick = true;
+                isRefreshTotalCount = true;
+                viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
+                viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
+                viewBinding.allClearIv.setVisibility(View.VISIBLE);
+                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
             }
         });
-        //宸叉仮澶�
-        viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() {
+        //鎶ヨ璁板綍
+        viewBinding.messageTabRecoverTitleTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                currentIndex = 1;
-                initView();
-                showFragment();
-                postEventBus(MessageFunctionTabSwitch.recover);
-
+                if (!isAlarmDeviceClick) {
+                    return;
+                }
+                mDeviceTypeFilterKye = FilterType.deviceType;
+                mDeviceTypeFilterValue = FilterType.all;
+                mTypeFilterKye = FilterType.all;
+                mTypeFilterValue = FilterType.all;
+                mTimeTypeFilterKye = FilterType.all;
+                mTimeTypeFilterValue = FilterType.all;
+                viewBinding.allDeviceTitleTv.setText(getString(R.string.alarm_all_device));
+                viewBinding.allGradeTitleTv.setText(getString(R.string.alarm_all_grade));
+                viewBinding.allTimeTitleTv.setText(getString(R.string.alarm_all_time));
+                isAlarmDeviceClick = false;
+                isRefreshTotalCount = true;
+                viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text14Style);
+                viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text18Style);
+                viewBinding.allClearIv.setVisibility(View.GONE);
+                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
+            }
+        });
+        //鎼滅储娑堟伅
+        viewBinding.messageSearchCl.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String messageStateType;
+                if (isAlarmDeviceClick) {
+                    messageStateType = MessageStateType.untreated;
+                } else {
+                    messageStateType = MessageStateType.processed;
+                }
+                Intent intent = new Intent();
+                intent.putExtra("MessageStateType", messageStateType);
+                intent.setClass(_mActivity, SearchMessageActivity.class);
+                startActivity(intent);
             }
         });
 
-        //鍏ㄩ儴
-        viewBinding.messageTabAllCl.setOnClickListener(new View.OnClickListener() {
+        //娓呯┖鎵�鏈夋湭璇绘寜閽�
+        viewBinding.allClearIv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                currentIndex = 2;
-                initView();
-                showFragment();
-                postEventBus(MessageFunctionTabSwitch.all);
+//                showLoading();
+                HdlMessageLogic.getInstance().messageAllRead("", new CloudCallBeak<Boolean>() {
+                    @Override
+                    public void onSuccess(Boolean obj) {
+//                        hideLoading();
+                        loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+//                        hideLoading();
+                        HdlThreadLogic.toast(_mActivity, e);
+                    }
+                });
+            }
+        });
+
+        //鍏ㄩ儴璁惧(鍏ㄩ儴璁惧銆侀�嗗彉鍣ㄣ�丅MS鎺у埗鐩掋�佺數姹犲崟鍏�)鎸夐挳
+        viewBinding.messageTabAllDeviceCl.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.up);
+                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
+                setTypeTitleListDialog(viewBinding.allDeviceTitleTv, FilterType.deviceType, getTypeList(FilterType.deviceType));
+
+            }
+        });
+        //鍏ㄩ儴绛夌骇(鏁呴殰銆佽鍛娿�佹彁绀�)鎸夐挳
+        viewBinding.messageTabAllGradeCl.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.up);
+                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
+                setTypeTitleListDialog(viewBinding.allGradeTitleTv, FilterType.type, getTypeList(FilterType.type));
+
+            }
+        });
+        //鍏ㄩ儴鏃堕棿(褰撳ぉ銆佽繎3澶┿�佽繎7澶┿�佽繎30澶�)鎸夐挳
+        viewBinding.messageTabAllTimeCl.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.up);
+                setTypeTitleListDialog(viewBinding.allTimeTitleTv, FilterType.timeType, getTypeList(FilterType.timeType));
+            }
+        });
+        if (mMessageAdapter != null) {
+            mMessageAdapter.setOnclickListener(new MessageAdapter.OnClickListener() {
+                @Override
+                public void onClick(int position, MessageBean messageBean) {
+                    Intent intent = new Intent();
+                    intent.putExtra("messageBean", new Gson().toJson(messageBean));
+                    intent.setClass(_mActivity, MessageInfoActivity.class);
+                    startActivity(intent);
+                }
+            });
+
+        }
+    }
+
+    /**
+     * 绫诲瀷绛涢��
+     *
+     * @param textView   缁勪欢鏄剧ず
+     * @param filterType 杩囨护绫诲瀷
+     * @param stringList 杩囨护绫诲瀷鍊艰〃
+     */
+    private void setTypeTitleListDialog(TextView textView, String filterType, List<String> stringList) {
+        BTypeTitleListDialog typeTitleListDialog = new BTypeTitleListDialog(_mActivity, stringList, textView.getText().toString());
+        typeTitleListDialog.show();
+        typeTitleListDialog.setOnListener(new BTypeTitleListDialog.OnClickListener() {
+            @Override
+            public void onClick(int position, String title) {
+                textView.setText(title);
+                switch (filterType) {
+                    case FilterType.deviceType: {
+                        mDeviceTypeFilterKye = filterType;
+                        mDeviceTypeFilterValue = findFilterValueString(title);
+                    }
+                    break;
+                    case FilterType.type: {
+                        mTypeFilterKye = filterType;
+                        mTypeFilterValue = findFilterValueString(title);
+                    }
+                    break;
+                    case FilterType.timeType: {
+                        mTimeTypeFilterKye = filterType;
+                        mTimeTypeFilterValue = findFilterValueString(title);
+                    }
+                    break;
+                }
+                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
+            }
+        });
+        typeTitleListDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+            @Override
+            public void onDismiss(DialogInterface dialog) {
+                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
+                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
             }
         });
     }
 
 
     private void initView() {
-        if (this.currentIndex == 0) {
-            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.line1V.setVisibility(View.VISIBLE);
-            viewBinding.line2V.setVisibility(View.GONE);
-            viewBinding.line3V.setVisibility(View.GONE);
-        } else if (this.currentIndex == 1) {
-            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.line1V.setVisibility(View.GONE);
-            viewBinding.line2V.setVisibility(View.VISIBLE);
-            viewBinding.line3V.setVisibility(View.GONE);
-        } else if (this.currentIndex == 2) {
-            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-            viewBinding.line1V.setVisibility(View.GONE);
-            viewBinding.line2V.setVisibility(View.GONE);
-            viewBinding.line3V.setVisibility(View.VISIBLE);
+        if (isAlarmDeviceClick) {
+            viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
+            viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
+        } else {
+            viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
+            viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
         }
-
+//        viewBinding..topMoreBtn.setVisibility(View.VISIBLE);
+//        viewBinding.toolbarTopMessageCenterListRl.topMoreIv.setImageResource(R.drawable.clearall);
+        mMessageAdapter = new MessageAdapter(_mActivity);
+        viewBinding.messageRcv.setLayoutManager(new LinearLayoutManager(_mActivity));
+        viewBinding.messageRcv.setAdapter(mMessageAdapter);
+        pullToRefresh();
     }
+
+    /**
+     * 涓嬫媺鍒锋柊鐨勯�昏緫
+     */
+    protected void pullToRefresh() {
+        viewBinding.messageSrl.setDelegate(new BGARefreshLayout.BGARefreshLayoutDelegate() {
+            @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.messageSrl.endRefreshing();
+                        loadNextPageMessageList(false, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
+
+                    }
+                }.execute();
+
+
+            }
+
+
+            @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.messageSrl.endLoadingMore();
+                        //鍔犺浇鏈�鏂版暟鎹畬鎴�
+                        if (!isLoadingMore) {
+                            // 婊戝姩鍒颁簡搴曢儴锛屾墽琛岀浉搴旂殑鎿嶄綔
+                            loadNextPageMessageList(false, ++mCurrentPage, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, false);
+                        }
+                    }
+                }.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.messageSrl.setRefreshViewHolder(hdlRefreshViewHolder);
+    }
+
 
     private void initData() {
+        //杩涙潵璇诲彇涓�娆℃暟鎹�(涓轰簡鏇存柊currentPage锛宑urrentTotal杩欎釜鍊�),app鍚姩鏃跺�欒鍙栵紝涓轰簡鍒锋柊娑堟伅妯″潡鐨勮鏍�
+        loadNextPageMessageList(true, 1, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, true);
     }
 
-    /**
-     * 鍙戝竷鐐瑰嚮浜嬩欢
-     *
-     * @param tabSwitch -
-     */
-    private void postEventBus(MessageFunctionTabSwitch tabSwitch) {
-        BaseEventBus baseEventBus = new BaseEventBus();
-        baseEventBus.setTopic(ConstantManage.message_function_tab_switch);
-        baseEventBus.setType(tabSwitch.toString());
-        //鍙戦�佺矘鎬т簨浠�(濡傛灉涓嶅彂绮樻�т簨浠朵細閬囧埌涓�涓病鏈夊姞杞藉嚭鏉ョ殑纰庣墖鎺ユ敹涓嶅埌淇℃伅)
-        EventBus.getDefault().postSticky(baseEventBus);
-    }
-
-
-    /**
-     * 鍒濆鍖朏ragment
-     *
-     * @param savedInstanceState -
-     */
-    private void initFragment(Bundle savedInstanceState) {
-        mFragmentManager = _mActivity.getSupportFragmentManager();
-        //纰庣墖鍒濆鍖�
-        NascentMessageFragment mNascentMessageFragment = new NascentMessageFragment();
-        RecoverMessageFragment mRecoverMessageFragment = new RecoverMessageFragment();
-        AllMessageFragment mAllMessageFragment = new AllMessageFragment();
-        if (savedInstanceState != null) {
-            //鈥滃唴瀛橀噸鍚�濇椂璋冪敤 鑾峰彇鈥滃唴瀛橀噸鍚�濇椂淇濆瓨鐨勭储寮曚笅鏍�
-            currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0);
-            if (fragmentList.size() != 0) {
-                fragmentList.clear();
-            }
-            fragmentList.add(mFragmentManager.findFragmentByTag(0 + ""));
-            fragmentList.add(mFragmentManager.findFragmentByTag(1 + ""));
-            fragmentList.add(mFragmentManager.findFragmentByTag(2 + ""));
-            restoreFragment();//鎭㈠fragment椤甸潰
-        } else {
-            //姝e父鍚姩鏃惰皟鐢�
-            fragmentList.add(mNascentMessageFragment);
-            fragmentList.add(mRecoverMessageFragment);
-            fragmentList.add(mAllMessageFragment);
-            showFragment();
-        }
-
-    }
-
-    /**
-     * 浣跨敤show() hide()鍒囨崲椤甸潰
-     * 鏄剧ずfragment
-     */
-    private void showFragment() {
-        FragmentTransaction ft = mFragmentManager.beginTransaction();
-        //濡傛灉涔嬪墠娌℃湁娣诲姞杩�
-        if (!fragmentList.get(currentIndex).isAdded()) {
-            //绗笁涓弬鏁颁负娣诲姞褰撳墠鐨刦ragment鏃剁粦瀹氫竴涓猼ag
-            ft.hide(currentFragment).add(R.id.message_fcv, fragmentList.get(currentIndex), currentIndex + "");
-        } else {
-            ft.hide(currentFragment).show(fragmentList.get(currentIndex));
-        }
-        currentFragment = fragmentList.get(currentIndex);
-        ft.commit();
-        //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵
-        currentFragment = fragmentList.get(currentIndex);
-
-
-    }
-
-    /**
-     * 鎭㈠fragment
-     */
-    private void restoreFragment() {
-        FragmentTransaction ft = mFragmentManager.beginTransaction();
-        for (int i = 0; i < fragmentList.size(); i++) {
-            if (i == currentIndex) {
-                ft.show(fragmentList.get(i));
-            } else {
-                ft.hide(fragmentList.get(i));
-            }
-        }
-        ft.commit();
-
-    }
 
     @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
     public void onEventMessage(BaseEventBus eventBus) {
@@ -220,22 +368,338 @@
         //鎺ユ敹澶栭儴鐐瑰嚮浜嬩欢
         if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
             if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) {
-                postEventBus(MessageFunctionTabSwitch.nascent);
-                HdlLogLogic.print("姝e湪鐐瑰嚮銆愭秷鎭��");
                 // 鍙栨秷绮樻�т簨浠�
                 EventBus.getDefault().removeStickyEvent(eventBus);
+                //杩涙潵璇诲彇涓�娆℃暟鎹�(涓轰簡鏇存柊currentPage锛宑urrentTotal杩欎釜鍊�)
+//                initData();
+                HdlLogLogic.print("姝e湪鐐瑰嚮銆愭秷鎭��");
 
             }
-        } else if (eventBus.getTopic().equals(ConstantManage.message_count)) {
+        } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
             if (eventBus.getType().equals(MessageStateType.untreated)) {
-                String s = getText(R.string.message_nascent) + "(" + HdlMessageLogic.getInstance().getNascentMessageMemoryList().size() + ")";
-                viewBinding.messageTabNascentTitleTv.setText(s);
-            } else if (eventBus.getType().equals(MessageStateType.processed)) {
-                String s = getText(R.string.message_recover) + "(" + HdlMessageLogic.getInstance().getRecoverMessageMemoryList().size() + ")";
-                viewBinding.messageTabRecoverTitleTv.setText(s);
-            }
+                updateListData();
+            }/* else if (eventBus.getType().equals(MessageStateType.processed)) {
+                updateListData();
+            }*/
         }
     }
 
+    /**
+     * 鍔犺浇涓�椤垫暟鎹�
+     *
+     * @param pageNo                  椤垫暟
+     * @param isShowLoading           鏄惁鍚姩鍔犺浇妗� true鍚姩
+     * @param deviceType_filter_key   绫诲瀷锛堣澶囷紝绛夌骇锛屾椂闂达級
+     * @param deviceType_filter_value deviceType锛圛NV 锛氶�嗗彉鍣紱BMS 锛欱MS鎺у埗鐩掞紱BATTERY 锛氱數姹犲崟鍏冿級锛�
+     *                                type锛團AULT 锛氭晠闅滐紱 WARN 锛氬憡璀︼紱 EVENT 锛氫簨浠�(鎻愮ず)锛夛紱
+     *                                timeType锛圱ODAY 锛氫粖澶╋紱LAST_3_DAYS: 杩�3澶╋紱LAST_7_DAYS 锛氳繎7澶╋紱LAST_30_DAYS 锛氳繎30澶╋級锛�
+     * @param isClear                 true琛ㄧず娓呯┖缂撳瓨
+     */
+    private void loadNextPageMessageList(
 
+            boolean isShowLoading,
+            int pageNo,
+            String deviceType_filter_key,
+            String deviceType_filter_value,
+            String type_filter_key,
+            String type_filter_value,
+            String timeType_filter_key,
+            String timeType_filter_value,
+            boolean isClear) {
+        if (isClear) {
+            //琛ㄧず浠庣涓�椤靛彲浠ヨ鍙栵紝榛樿娓呯┖鎵�鏈夌紦瀛樻暟鎹�;
+            clearCacheData();
+        }
+        //绗竴椤佃鍙栨暟鎹己鍒惰
+        if (pageNo > 1 && mCurrentPage > mCurrentTotal) {
+            --mCurrentPage;
+            //褰撳墠椤典笉鑳藉ぇ浜庢�婚〉鏁�
+            return;
+        }
+        isLoadingMore = true;//鏍囪璇诲彇鐘舵��
+        if (isShowLoading) {
+            showLoading();
+        }
+        String messageStateType;
+        if (isAlarmDeviceClick) {
+            messageStateType = MessageStateType.untreated;
+        } 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>() {
+            @Override
+            public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) {
+                if (messageListClass != null) {
+                    mCurrentTotal = (int) messageListClass.getTotalPage();
+                    mCurrentPage = (int) messageListClass.getPageNo();
+                    mTotalCount = (int) messageListClass.getTotalCount();
+                    updateListData();
+                }
+                isLoadingMore = false;
+                if (isShowLoading) {
+                    hideLoading();
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (mCurrentPage > 1) {
+                    --mCurrentPage;
+                }
+                isLoadingMore = false;
+                if (isShowLoading) {
+                    hideLoading();
+                }
+                HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
+            }
+        });
+
+
+    }
+
+    /**
+     * 鍒锋柊鍒楄〃鏁版嵁
+     */
+    private void updateListData() {
+        HdlThreadLogic.runMainThread(new Runnable() {
+            @Override
+            public void run() {
+                //璇诲彇缂撳瓨鏁版嵁
+                updateCacheData();
+                //鍒锋柊鍒楄〃
+                updateRecyclerViewList();
+                //鏄剧ず鏈淇℃伅鎬绘暟閲�
+                getUnreadCount();
+                if (isAlarmDeviceClick) {
+                    refreshNascentTotalCount(mTotalCount);
+                } else {
+                    refreshRecoverTotalCount(mTotalCount);
+                }
+                //鏄剧ず娌℃暟鎹甎i鏍峰紡
+                nullDataUpdateUi();
+
+
+            }
+        });
+    }
+
+    /**
+     * 鍒锋柊鍙戦�佷腑娑堟伅鎬绘暟閲�
+     *
+     * @param nascentTotalCount 鍙戦�佷腑娑堟伅鎬绘暟閲�
+     */
+    private void refreshNascentTotalCount(int nascentTotalCount) {
+        HdlThreadLogic.runMainThread(new Runnable() {
+            @Override
+            public void run() {
+                //璁惧鎶ヨ鎬绘暟閲�
+                TextView nascentTv = _mActivity.findViewById(R.id.message_tab_nascent_title_tv);
+                if (nascentTv != null) {
+                    nascentTv.setText(getText(R.string.message_nascent));
+                    if (nascentTotalCount > 0) {
+                        String s = getText(R.string.message_nascent) + "(" + nascentTotalCount + ")";
+                        nascentTv.setText(s);
+                    }
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鍒锋柊鎶ヨ璁板綍娑堟伅鎬绘暟閲�
+     *
+     * @param recoverTotalCount 鎶ヨ璁板綍娑堟伅鎬绘暟閲�
+     */
+    private void refreshRecoverTotalCount(int recoverTotalCount) {
+        HdlThreadLogic.runMainThread(new Runnable() {
+            @Override
+            public void run() {
+                //鎶ヨ璁板綍鎬绘暟閲�
+                TextView recoverTV = _mActivity.findViewById(R.id.message_tab_recover_title_tv);
+                if (recoverTV != null) {
+                    recoverTV.setText(getText(R.string.alarm_record));
+                    if (recoverTotalCount > 0) {
+                        String s = getText(R.string.alarm_record) + "(" + recoverTotalCount + ")";
+                        recoverTV.setText(s);
+                    }
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鍒锋柊銆愭秷鎭ā鍧椼�戜笅瑙掓爣鏁板��
+     *
+     * @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 updateRecyclerViewList() {
+        if (mMessageAdapter == null) {
+            return;
+        }
+        mMessageAdapter.setList(mList);
+    }
+
+    /**
+     * 娓呯┖鎵�鏈夌紦瀛樻暟鎹�(鑾峰彇绗竴椤典箣鍓嶈娓呯┖鎵�鏈夌紦瀛樻暟鎹�)
+     */
+    private void clearCacheData() {
+        mList.clear();
+        HdlMessageLogic.getInstance().clearListMessage();//琛ㄧず寮哄埗娓呯┖鎵�鏈夌紦瀛樹俊鎭�
+    }
+
+    /**
+     * 鏇存柊缂撳瓨鏁版嵁
+     */
+    private void updateCacheData() {
+        mList.clear();
+        if (isAlarmDeviceClick) {
+            //璁惧鎶ヨ
+            mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList());
+        } else {
+            //鎶ヨ璁板綍
+            mList.addAll(HdlMessageLogic.getInstance().getRecoverMessageMemoryList());
+        }
+    }
+
+    /**
+     * 璇诲彇娑堟伅銆愭湭璇绘暟閲�,鏈鐞嗘�绘暟閲忥紝宸插鐞嗘�绘暟閲忋��
+     */
+    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());
+//                        if (isRefreshTotalCount) {
+//                            isRefreshTotalCount = false;
+                        refreshNascentTotalCount(unCountBean.getUntreatedCount());
+                        refreshRecoverTotalCount(unCountBean.getProcessedCount());
+//                        }
+                    }
+
+                });
+            }
+
+            @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 nullDataUpdateUi() {
+        HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0);
+    }
+
+    /**
+     * 鏌ユ壘杩囨护鍊�
+     *
+     * @param title 鏍囬
+     * @return 杩囨护鍊�
+     */
+    public String findFilterValueString(String title) {
+        Map<String, String> map = new HashMap<>();
+        map.put(getString(R.string.alarm_all_device), "");//璁惧鍏ㄩ儴
+        map.put(getString(R.string.alarm_all_device_inverter), "INV");
+        map.put(getString(R.string.alarm_all_device_bms), "BMS");
+        map.put(getString(R.string.alarm_all_device_battery_cell), "BATTERY");
+        map.put(getString(R.string.alarm_all_device_load_centre), "LOAD_CENTRE");
+        map.put(getString(R.string.alarm_all_grade), "");//璁剧瓑绾у叏閮�
+        map.put(getString(R.string.alarm_all_grade_malfunction), "FAULT");
+        map.put(getString(R.string.alarm_all_grade_warning), "WARN");
+        map.put(getString(R.string.alarm_all_grade_tip), "EVENT");
+        map.put(getString(R.string.alarm_all_time), "");//鏃堕棿鍏ㄩ儴
+        map.put(getString(R.string.alarm_all_time_same_day), "TODAY");
+        map.put(getString(R.string.alarm_all_time_3), "LAST_3_DAYS");
+        map.put(getString(R.string.alarm_all_time_7), "LAST_7_DAYS");
+        map.put(getString(R.string.alarm_all_time_30), "LAST_30_DAYS");
+
+        for (Map.Entry<String, String> entry : map.entrySet()) {
+            if (title.equals(entry.getKey())) {
+                return entry.getValue();
+            }
+        }
+        return "";
+    }
+
+    /**
+     * 鑾峰彇绫诲瀷鍒楄〃
+     *
+     * @param filterType 杩囨护绫诲瀷
+     * @return 杩斿洖绫诲瀷鍒楄〃
+     */
+    private List<String> getTypeList(String filterType) {
+        List<String> stringList = new ArrayList<>();
+        switch (filterType) {
+            case FilterType.deviceType: {
+                stringList.add(getString(R.string.alarm_all_device));
+                stringList.add(getString(R.string.alarm_all_device_inverter));
+                stringList.add(getString(R.string.alarm_all_device_bms));
+                stringList.add(getString(R.string.alarm_all_device_battery_cell));
+                stringList.add(getString(R.string.alarm_all_device_load_centre));
+            }
+            break;
+            case FilterType.type: {
+                stringList.add(getString(R.string.alarm_all_grade));
+                stringList.add(getString(R.string.alarm_all_grade_malfunction));
+                stringList.add(getString(R.string.alarm_all_grade_warning));
+                stringList.add(getString(R.string.alarm_all_grade_tip));
+            }
+            break;
+            case FilterType.timeType: {
+                stringList.add(getString(R.string.alarm_all_time));
+                stringList.add(getString(R.string.alarm_all_time_same_day));
+                stringList.add(getString(R.string.alarm_all_time_3));
+                stringList.add(getString(R.string.alarm_all_time_7));
+                stringList.add(getString(R.string.alarm_all_time_30));
+            }
+            break;
+        }
+        return stringList;
+    }
 }

--
Gitblit v1.8.0