app/src/main/java/com/hdl/photovoltaic/config/AppConfigManage.java
@@ -9,7 +9,7 @@ /*********是否正式服务器*********/ private static final boolean isOnlineServer = true; private static final boolean isOnlineServer = false; /*********正式环境*********/ private static final String APP_KEY_ONLINE = "CSZEMDJL"; private static final String APP_SECRET_ONLINE = "CSZEMDKBCSZEMDKR"; app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -23,7 +23,8 @@ public class HdlMessageLogic { private static volatile HdlMessageLogic sHdlMessageLogic; private int pageSize = 50;//页数 private final int pageSize = 50;//页数 private List<MessageBean> mListMessage = new ArrayList<>(); /** * 获取当前对象 @@ -41,6 +42,7 @@ } return sHdlMessageLogic; } /** * 获取发生中缓存列表 @@ -242,8 +244,29 @@ } private List<MessageBean> mListMessage = new ArrayList<>(); /** * 获取未处理缓存消息数量 */ public String getMessageUntreatedMemoryCount() { if (this.mListMessage == null || this.mListMessage.size() == 0) { return "0"; } List<MessageBean> newList = new ArrayList<>(); for (int i = 0; i < mListMessage.size(); i++) { MessageBean messageBean = mListMessage.get(i); if (messageBean == null) { continue; } if (!messageBean.getStatus().equals(MessageStateType.untreated)) { continue; } if (!messageBean.isRead()) { newList.add(messageBean); } } return newList.size() + ""; } /** * 获取未处理消息数量 @@ -314,7 +337,7 @@ json.addProperty("status", messageStateType); } json.addProperty("pageNo", 1);//页码 json.addProperty("pageSize", 50);//页数 json.addProperty("pageSize", pageSize);//页数 List<MessageBean> list = new ArrayList<>(); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { @@ -384,74 +407,36 @@ } /** * 获取消息列表 * 获取指定页的获取消息列表 * * @param pageNo 页码 * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理; * @param cloudCallBeak - */ private void getMessageList(int pageNo, String messageStateType, CloudCallBeak<List<MessageBean>> cloudCallBeak) { public void getPageNoMessageList(int pageNo, String messageStateType, CloudCallBeak<MessageListClass> cloudCallBeak) { String requestUrl = HttpApi.POST_Message_List; JsonObject json = new JsonObject(); if (!MessageStateType.all.equals(messageStateType)) { json.addProperty("status", messageStateType); } json.addProperty("pageNo", 1);//页码 json.addProperty("pageSize", 50);//页数 json.addProperty("pageNo", pageNo);//页码 json.addProperty("pageSize", pageSize);//页数 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<>()); cloudCallBeak.onSuccess(new MessageListClass()); } return; } Gson gson = new Gson(); MessageListClass oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class); list.addAll(oldMessageListClass.getList()); setListMessage(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()); setListMessage(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); } } } }); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(oldMessageListClass); } } @@ -533,7 +518,7 @@ } static class MessageListClass { public static class MessageListClass { //总条数 private long totalCount; app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -114,7 +114,7 @@ } String acc = "13375012441"; String pws = "a123456"; String pws = "123456"; //测试用 viewBinding.homeLoginAccountEt.setText(acc); viewBinding.homeLoginPasswordEt.setText(pws); app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
@@ -5,6 +5,7 @@ import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; @@ -39,6 +40,7 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.Date; import java.util.List; /** @@ -50,10 +52,9 @@ private MessageAdapter messageNascentAdapter; private final List<MessageBean> mList = new ArrayList<>(); private int currentPage = 0; // 当前页码 private int total = 0; // 最后页码 // 添加上拉加载更多的逻辑 private int visibleThreshold = 5; // 当前显示的最后一项与总共有多少条数据之间的差值 private int currentPage = 1; // 当前页码 private boolean isLoadingMore = false; // 标记正在加载更多数据 LinearLayoutManager layoutManager; @@ -85,9 +86,10 @@ viewBinding.messageNascentSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { mList.clear();//表示强制重新请求消息列表 updateListData();//清空之前缓存,因为遇到一个问题猛拉的时候报错; getNascentMessageList(false); viewBinding.messageNascentSrl.setRefreshing(false); // mList.clear();//表示强制重新请求消息列表 // updateListData();//清空之前缓存,因为遇到一个问题猛拉的时候报错; // getNascentMessageList(false); } }); messageNascentAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() { @@ -107,25 +109,22 @@ viewBinding.messageNascentRecyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // super.onScrolled(recyclerView, dx, dy); // if (dy <= 0) { // //等于0是顶部 // return; // } // LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); // assert layoutManager != null; // // 只有垂直布局才会触发上拉事件 // if (!layoutManager.canScrollVertically()) { // return; // } // // int totalItemCount = layoutManager.getItemCount(); // int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition(); // // if (!isLoadingMore && totalItemCount <= (lastVisibleItemPosition + visibleThreshold)) { //// loadNextPage(); // } LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); if (layoutManager == null) { return; } int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) { if (!isLoadingMore) { // 滑动到了底部,执行相应的操作 HdlLogLogic.print("--->滑动到了底部"); loadNextPageNascentMessageList(++currentPage, false); } } } }); } @@ -141,15 +140,24 @@ * 刷新列表数据 */ private void updateListData() { if (this.messageNascentAdapter != null) { this.messageNascentAdapter.setList(mList); this.messageNascentAdapter.notifyDataSetChanged(); } //刷新【发生中】信息数量总数 this.refreshNascentCount(); this.nullDataUpdateUi(); HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { //更新缓存数据 initData(); //刷新列表 if (messageNascentAdapter != null) { messageNascentAdapter.setList(mList); messageNascentAdapter.notifyDataSetChanged(); } //显示发生中消息总数量 refreshNascentCount(); //显示没数据Ui样式 nullDataUpdateUi(); //显示未读信息总数量 getUnreadCount(); } }); } /** @@ -181,8 +189,8 @@ if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) { if (eventBus.getType().equals(MessageFunctionTabSwitch.nascent.toString())) { initData(); getNascentMessageList(true); getUnreadCount(); loadNextPageNascentMessageList(1, true); // getUnreadCount(); // 取消粘性事件 EventBus.getDefault().removeStickyEvent(eventBus); @@ -193,126 +201,121 @@ //消息详情回调 initData(); updateListData(); getUnreadCount(); // getUnreadCount(); } } } /** * 获取发生中的消息列表 * 加载一页数据 * * @param pageNo 页数 * @param isShowLoading 是否启动加载框 true启动 */ private void getNascentMessageList(boolean isShowLoading) { if (mList.size() == 0) { if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getNascentMessageList(new CloudCallBeak<List<MessageBean>>() { @Override public void onSuccess(List<MessageBean> list) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { if (isShowLoading) { hideLoading(); } if (!isShowLoading) { viewBinding.messageNascentSrl.setRefreshing(false); } if (list != null && list.size() != 0) { mList.addAll(list); updateListData(); } else { nullDataUpdateUi(); } } }); } @Override public void onFailure(HDLException e) { if (isShowLoading) { hideLoading(); } if (!isShowLoading) { viewBinding.messageNascentSrl.setRefreshing(false); } } }); private void loadNextPageNascentMessageList(int pageNo, boolean isShowLoading) { if (pageNo == 1 && mList.size() > 0) { //缓存数据没有才可以读取第一页 return; } } if (currentPage > total) { //当前页不能大于总页数 return; } isLoadingMore = true;//标记读取状态 if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getPageNoMessageList(pageNo, MessageStateType.untreated, new CloudCallBeak<HdlMessageLogic.MessageListClass>() { @Override public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) { if (messageListClass != null) { total = (int) messageListClass.getTotalPage(); currentPage = (int) messageListClass.getPageNo(); updateListData(); } isLoadingMore = false; if (isShowLoading) { hideLoading(); } } // private void loadNextPage() { // isLoadingMore = true; // // // 模拟网络请求获取新的数据 // Handler handler = new Handler(); // handler.postDelayed(() -> { // List<MessageBean> newData = fetchNewDataFromServer(currentPage++); // messageNascentAdapter.setList(newData); // isLoadingMore = false; // }, 2000); // } // // private List<MessageBean> fetchNewDataFromServer(int pageNumber) { // // TODO: 从服务器获取新的数据并返回 // pageNumber++; // List<MessageBean> newData = HdlMessageLogic.getInstance().getAllMessageList(); // return newData; // } @Override public void onFailure(HDLException e) { if (currentPage > 1) { --currentPage; } isLoadingMore = false; if (isShowLoading) { hideLoading(); } } }); } /** * 读取消息【未读数量】 */ private void getUnreadCount() { HdlMessageLogic.getInstance().getMessageUntreatedCount(new CloudCallBeak<String>() { @Override public void onSuccess(String data) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { JSONObject jsonObject = JSON.parseObject(data); // if (jsonObject.containsKey("untreatedCount")) { // //未处理数量 // jsonObject.getString("untreatedCount"); // } String unreadCount = "0"; if (jsonObject.containsKey("unreadCount")) { //未读数量 unreadCount = jsonObject.getString("unreadCount"); } TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); if (textView != null) { if (TextUtils.isEmpty(unreadCount) || unreadCount.equals("0")) { textView.setVisibility(View.GONE); } else { if (unreadCount.length() > 2) { //大于3位数,默认99+ unreadCount = "99+"; } textView.setVisibility(View.VISIBLE); textView.setText(unreadCount); } } } }); } @Override public void onFailure(HDLException e) { TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); if (textView != null) { textView.setVisibility(View.GONE); String untreatedMemoryCount = HdlMessageLogic.getInstance().getMessageUntreatedMemoryCount(); TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); if (textView != null) { if (TextUtils.isEmpty(untreatedMemoryCount) || untreatedMemoryCount.equals("0")) { textView.setVisibility(View.GONE); } else { if (untreatedMemoryCount.length() > 2) { //大于3位数,默认99+ untreatedMemoryCount = "99+"; } textView.setVisibility(View.VISIBLE); textView.setText(untreatedMemoryCount); } }); } // // HdlMessageLogic.getInstance().getMessageUntreatedCount(new CloudCallBeak<String>() { // @Override // public void onSuccess(String data) { // // HdlThreadLogic.runMainThread(new Runnable() { // @Override // public void run() { // JSONObject jsonObject = JSON.parseObject(data); //// if (jsonObject.containsKey("untreatedCount")) { //// //未处理数量 //// jsonObject.getString("untreatedCount"); //// } // String unreadCount = "0"; // if (jsonObject.containsKey("unreadCount")) { // //未读数量 // unreadCount = jsonObject.getString("unreadCount"); // } // TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); // if (textView != null) { // if (TextUtils.isEmpty(unreadCount) || unreadCount.equals("0")) { // textView.setVisibility(View.GONE); // } else { // if (unreadCount.length() > 2) { // //大于3位数,默认99+ // unreadCount = "99+"; // } // textView.setVisibility(View.VISIBLE); // textView.setText(unreadCount); // } // // // } // } // }); // // } // // @Override // public void onFailure(HDLException e) { // TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); // if (textView != null) { // textView.setVisibility(View.GONE); // } // } // }); } @@ -320,9 +323,6 @@ * 没有电站列表的样式 */ 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); HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0); } } app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java
@@ -4,7 +4,9 @@ import android.os.Bundle; 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; @@ -40,6 +42,10 @@ FragmentRecoverMessageBinding viewBinding; private MessageAdapter messageRecoverAdapter; private int currentPage = 0; // 当前页码 private int total = 0; // 最后页码 private boolean isLoadingMore = false; // 标记正在加载更多数据 private final List<MessageBean> mList = new ArrayList<>(); @@ -71,9 +77,10 @@ viewBinding.messageRecoverSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { mList.clear();//表示强制重新请求消息列表 updateListData();//清空之前缓存,因为遇到一个问题猛拉的时候报错; getRecoverMessageList(false); viewBinding.messageRecoverSrl.setRefreshing(false); // mList.clear();//表示强制重新请求消息列表 // updateListData();//清空之前缓存,因为遇到一个问题猛拉的时候报错; // getRecoverMessageList(false); } }); messageRecoverAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() { @@ -88,7 +95,30 @@ startActivity(intent); } }); viewBinding.messageRecoverRecyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { // super.onScrolled(recyclerView, dx, dy); LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); if (layoutManager == null) { return; } int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) { if (!isLoadingMore) { // 滑动到了底部,执行相应的操作 HdlLogLogic.print("--->滑动到了底部"); loadNextPageRecoverMessageList(++currentPage, false); } } } }); } private void initView() { viewBinding.messageRecoverRecyclerview.setLayoutManager(new LinearLayoutManager(_mActivity)); @@ -101,14 +131,25 @@ * 刷新列表数据 */ private void updateListData() { if (this.messageRecoverAdapter != null) { this.messageRecoverAdapter.setList(mList); this.messageRecoverAdapter.notifyDataSetChanged(); } //刷新【已恢复】信息数量总数 this.refreshRecoverCount(); this.nullDataUpdateUi(); HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { //更新缓存数据 initData(); //刷新列表 if (messageRecoverAdapter != null) { messageRecoverAdapter.setList(mList); messageRecoverAdapter.notifyDataSetChanged(); } //刷新【已恢复】信息数量总数 refreshRecoverCount(); //显示没数据Ui样式 nullDataUpdateUi(); } }); } @@ -122,7 +163,7 @@ if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) { if (eventBus.getType().equals(MessageFunctionTabSwitch.recover.toString())) { initData(); getRecoverMessageList(true); loadNextPageRecoverMessageList(1, true); // 取消粘性事件 EventBus.getDefault().removeStickyEvent(eventBus); } @@ -136,54 +177,53 @@ } } /** * 获取恢复中的消息列表 * 加载一页数据 * * @param isShowLoading 是否启动 true启动 * @param pageNo 页数 * @param isShowLoading 是否启动加载框 true启动 */ private void getRecoverMessageList(boolean isShowLoading) { if (mList.size() == 0) { if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getRecoverMessageList(new CloudCallBeak<List<MessageBean>>() { @Override public void onSuccess(List<MessageBean> list) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { if (isShowLoading) { hideLoading(); } if (!isShowLoading) { viewBinding.messageRecoverSrl.setRefreshing(false); } if (list != null && list.size() != 0) { mList.addAll(list); updateListData(); } else { nullDataUpdateUi(); } } }); } @Override public void onFailure(HDLException e) { if (isShowLoading) { hideLoading(); } if (!isShowLoading) { viewBinding.messageRecoverSrl.setRefreshing(false); } } }); private void loadNextPageRecoverMessageList(int pageNo, boolean isShowLoading) { if (pageNo == 1 && mList.size() > 0) { //缓存数据没有才可以读取第一页 return; } if (currentPage > total) { //当前页不能大于总页数 return; } isLoadingMore = true;//标记读取状态 if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getPageNoMessageList(pageNo, MessageStateType.processed, new CloudCallBeak<HdlMessageLogic.MessageListClass>() { @Override public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) { if (messageListClass != null) { total = (int) messageListClass.getTotalPage(); currentPage = (int) messageListClass.getPageNo(); updateListData(); } isLoadingMore = false; if (isShowLoading) { hideLoading(); } } @Override public void onFailure(HDLException e) { if (currentPage > 1) { --currentPage; } isLoadingMore = false; if (isShowLoading) { hideLoading(); } } }); } /** * 刷新【已恢复】信息数量总数 */ app/src/main/res/layout/item_message.xml
@@ -24,12 +24,17 @@ <TextView android:id="@+id/item_content_tv" android:layout_width="wrap_content" android:layout_width="0dp" android:layout_height="@dimen/dp_23" android:layout_marginStart="20dp" android:layout_marginTop="16dp" android:layout_marginEnd="@dimen/dp_5" android:gravity="center_vertical" android:textColor="@color/text_90000000" android:textSize="@dimen/text_16" android:ellipsize="end" android:singleLine="true" app:layout_constraintEnd_toStartOf="@+id/item_estate_tv" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -62,7 +67,7 @@ android:gravity="center" android:paddingStart="@dimen/dp_12" android:paddingEnd="@dimen/dp_12" android:text="@string/my_power_station_connecting" android:text="@string/message_alarm" android:textColor="@color/text_FFFFFFFF" android:textSize="@dimen/text_12" app:layout_constraintEnd_toEndOf="parent"