From 44ba605a4e850efa757020da5fb4cf02bdf6e3ab Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期一, 08 九月 2025 10:55:18 +0800
Subject: [PATCH] 2025年09月08日10:55:15
---
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java | 749 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 615 insertions(+), 134 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 40e921a..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,44 +1,78 @@
package com.hdl.photovoltaic.ui.message;
-import android.os.Build;
+import android.annotation.SuppressLint;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.AsyncTask;
import android.os.Bundle;
-import android.os.Handler;
import android.view.View;
+import android.widget.TextView;
-import androidx.annotation.RequiresApi;
-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.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;
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 List<Fragment> fragments = new ArrayList<>();
- private int currentIndex = 0;
- private AllMessageFragment mAllMessageFragment;
- private NascentMessageFragment mNascentMessageFragment;
- private RecoverMessageFragment mRecoverMessageFragment;
+ 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() {
@@ -48,177 +82,624 @@
@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) {
- viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
- viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.line1V.setVisibility(View.GONE);
- viewBinding.line2V.setVisibility(View.VISIBLE);
- viewBinding.line3V.setVisibility(View.GONE);
- showFragment(0);
- postEventBus(HdlCommonLogic.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) {
- viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
- viewBinding.line1V.setVisibility(View.GONE);
- viewBinding.line2V.setVisibility(View.GONE);
- viewBinding.line3V.setVisibility(View.VISIBLE);
- showFragment(1);
- postEventBus(HdlCommonLogic.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) {
- viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
- viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.line1V.setVisibility(View.VISIBLE);
- viewBinding.line2V.setVisibility(View.GONE);
- viewBinding.line3V.setVisibility(View.GONE);
- showFragment(2);
- postEventBus(HdlCommonLogic.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() {
- viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
- viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
- viewBinding.line1V.setVisibility(View.GONE);
- viewBinding.line2V.setVisibility(View.VISIBLE);
- viewBinding.line3V.setVisibility(View.GONE);
- if (this.currentIndex == 0) {
- postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent);
- } else if (this.currentIndex == 1) {
- postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover);
- } else if (this.currentIndex == 2) {
- postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all);
+ 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() {
- }
-
- /**
- * 鍙戝竷鐐瑰嚮浜嬩欢
- *
- * @param tabSwitch -
- */
- private void postEventBus(HdlCommonLogic.MessageFunctionTabSwitch tabSwitch) {
- BaseEventBus baseEventBus = new BaseEventBus();
- baseEventBus.setTopic(ConstantManage.message_function_tab_switch);
- baseEventBus.setType(tabSwitch + "");
- EventBus.getDefault().post(baseEventBus);
+ //杩涙潵璇诲彇涓�娆℃暟鎹�(涓轰簡鏇存柊currentPage锛宑urrentTotal杩欎釜鍊�),app鍚姩鏃跺�欒鍙栵紝涓轰簡鍒锋柊娑堟伅妯″潡鐨勮鏍�
+ loadNextPageMessageList(true, 1, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, true);
}
- /**
- * 鍒濆鍖朏ragment
- *
- * @param savedInstanceState -
- */
- private void initFragment(Bundle savedInstanceState) {
- mFragmentManager = _mActivity.getSupportFragmentManager();
- //纰庣墖鍐呴渶瑕佷娇鐢ㄦ潈闄愬拰forresult
+ @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);
+ //杩涙潵璇诲彇涓�娆℃暟鎹�(涓轰簡鏇存柊currentPage锛宑urrentTotal杩欎釜鍊�)
+// initData();
+ HdlLogLogic.print("姝e湪鐐瑰嚮銆愭秷鎭��");
- mNascentMessageFragment = new NascentMessageFragment();
- mRecoverMessageFragment = new RecoverMessageFragment();
- mAllMessageFragment = new AllMessageFragment();
- if (savedInstanceState != null) {
- //鈥滃唴瀛橀噸鍚�濇椂璋冪敤 鑾峰彇鈥滃唴瀛橀噸鍚�濇椂淇濆瓨鐨勭储寮曚笅鏍�
- currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0);
- if (fragments.size() != 0) {
- fragments.clear();
}
- fragments.add(mFragmentManager.findFragmentByTag(0 + ""));
- fragments.add(mFragmentManager.findFragmentByTag(1 + ""));
- fragments.add(mFragmentManager.findFragmentByTag(2 + ""));
- restoreFragment();//鎭㈠fragment椤甸潰
- } else {
- //姝e父鍚姩鏃惰皟鐢�
- fragments.add(mAllMessageFragment);
- fragments.add(mNascentMessageFragment);
- fragments.add(mRecoverMessageFragment);
- showFragment();
-
-
+ } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
+ if (eventBus.getType().equals(MessageStateType.untreated)) {
+ updateListData();
+ }/* else if (eventBus.getType().equals(MessageStateType.processed)) {
+ updateListData();
+ }*/
}
-
}
/**
- * 鍒囨崲Fragment
+ * 鍔犺浇涓�椤垫暟鎹�
*
- * @param index 绱㈠紩
+ * @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 showFragment(int index) {
- currentIndex = index;
- showFragment();
- }
+ private void loadNextPageMessageList(
- /**
- * 浣跨敤show() hide()鍒囨崲椤甸潰
- * 鏄剧ずfragment
- */
- private void showFragment() {
- FragmentTransaction ft = mFragmentManager.beginTransaction();
- //濡傛灉涔嬪墠娌℃湁娣诲姞杩�
- if (!fragments.get(currentIndex).isAdded()) {
- //绗笁涓弬鏁颁负娣诲姞褰撳墠鐨刦ragment鏃剁粦瀹氫竴涓猼ag
- ft.hide(currentFragment)
- .add(R.id.message_fcv, fragments.get(currentIndex), "" + currentIndex);
- } else {
- ft.hide(currentFragment)
- .show(fragments.get(currentIndex));
+ 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();
}
- currentFragment = fragments.get(currentIndex);
- ft.commit();
+ //绗竴椤佃鍙栨暟鎹己鍒惰
+ 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() + ")");
+ }
+ });
+
+
}
/**
- * 鎭㈠fragment
+ * 鍒锋柊鍒楄〃鏁版嵁
*/
+ private void updateListData() {
+ HdlThreadLogic.runMainThread(new Runnable() {
+ @Override
+ public void run() {
+ //璇诲彇缂撳瓨鏁版嵁
+ updateCacheData();
+ //鍒锋柊鍒楄〃
+ updateRecyclerViewList();
+ //鏄剧ず鏈淇℃伅鎬绘暟閲�
+ getUnreadCount();
+ if (isAlarmDeviceClick) {
+ refreshNascentTotalCount(mTotalCount);
+ } else {
+ refreshRecoverTotalCount(mTotalCount);
+ }
+ //鏄剧ず娌℃暟鎹甎i鏍峰紡
+ nullDataUpdateUi();
- private void restoreFragment() {
- FragmentTransaction ft = mFragmentManager.beginTransaction();
- for (int i = 0; i < fragments.size(); i++) {
- if (i == currentIndex) {
- ft.show(fragments.get(i));
- } else {
- ft.hide(fragments.get(i));
+
+ }
+ });
+ }
+
+ /**
+ * 鍒锋柊鍙戦�佷腑娑堟伅鎬绘暟閲�
+ *
+ * @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();
}
}
- ft.commit();
- //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵
- currentFragment = fragments.get(currentIndex);
+ 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