From dbff6d6f9200417ea60e2fe507b79cbe2eb7ea32 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期四, 11 一月 2024 18:19:48 +0800
Subject: [PATCH] 2024年01月11日18:19:42
---
app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 151 insertions(+), 16 deletions(-)
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
index 725e233..3388a68 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
@@ -1,18 +1,33 @@
package com.hdl.photovoltaic.ui.message;
+import android.content.Intent;
import android.os.Bundle;
+import android.os.Handler;
+import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+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.FragmentNascentMessageBinding;
-import com.hdl.photovoltaic.other.HdlCommonLogic;
+import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch;
+import com.hdl.photovoltaic.enums.MessageStateType;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
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.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;
@@ -25,7 +40,14 @@
private MessageAdapter messageNascentAdapter;
- private List<MessageBean> mList;
+ private final List<MessageBean> mList = new ArrayList<>();
+
+ // 娣诲姞涓婃媺鍔犺浇鏇村鐨勯�昏緫
+ private int visibleThreshold = 5; // 褰撳墠鏄剧ず鐨勬渶鍚庝竴椤逛笌鎬诲叡鏈夊灏戞潯鏁版嵁涔嬮棿鐨勫樊鍊�
+ private int currentPage = 1; // 褰撳墠椤电爜
+ private boolean isLoadingMore = false; // 鏍囪姝e湪鍔犺浇鏇村鏁版嵁
+
+ LinearLayoutManager layoutManager;
@Override
public Object getContentView() {
@@ -36,7 +58,7 @@
@Override
public void onBindView(Bundle savedInstanceState) {
//鍒濆鍖栨暟鎹�
- initData();
+// initData();
//鍒濆鍖栫晫闈�
initView();
//鍒濆鍖栫洃鍚櫒
@@ -44,47 +66,160 @@
}
private void initData() {
- mList = new ArrayList<>();
- for (int i = 0; i < 3; i++) {
- MessageBean messageBean = new MessageBean();
- messageBean.setContent("鏉ヤ簡涓�鏉″憡璀︿俊鎭�" + i);
- messageBean.setHomeName(i + "");
- messageBean.setTime("2023-12-06-15");
- messageBean.setRead(false);
- mList.add(messageBean);
- }
+ mList.clear();
+ mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList());
}
private void initEvent() {
+ //璁剧疆涓嬫媺绠ご棰滆壊
+ viewBinding.messageNascentSrl.setColorSchemeResources(R.color.text_FF245EC3);
+ viewBinding.messageNascentSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ mList.clear();//琛ㄧず寮哄埗閲嶆柊璇锋眰娑堟伅鍒楄〃
+ updateListData();//娓呯┖涔嬪墠缂撳瓨,鍥犱负閬囧埌涓�涓棶棰樼寷鎷夌殑鏃跺�欐姤閿�;
+ getNascentMessageList(false);
+ }
+ });
messageNascentAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() {
@Override
public void onClick(int position, MessageBean item) {
+ if (position < 0 || position > mList.size()) {
+ return;
+ }
+ Intent intent = new Intent();
+ intent.putExtra("msgId", item.getMsgId().toString());
+ intent.setClass(_mActivity, MessageInfoActivity.class);
+ startActivity(intent);
+ }
+ });
+ viewBinding.messageNascentRecyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+
+// int totalItemCount = layoutManager.getItemCount();
+// int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
+//
+// if (!isLoadingMore && totalItemCount <= (lastVisibleItemPosition + visibleThreshold)) {
+// loadNextPage();
+// }
}
});
}
private void initView() {
- viewBinding.messageNascentRecyclerview.setLayoutManager(new LinearLayoutManager(_mActivity));
+ layoutManager = new LinearLayoutManager(_mActivity);
+ viewBinding.messageNascentRecyclerview.setLayoutManager(layoutManager);
messageNascentAdapter = new MessageAdapter(this.mList, _mActivity);
viewBinding.messageNascentRecyclerview.setAdapter(messageNascentAdapter);
}
+ /**
+ * 鍒锋柊鍒楄〃鏁版嵁
+ */
private void updateListData() {
if (this.messageNascentAdapter != null) {
+ this.messageNascentAdapter.setList(mList);
this.messageNascentAdapter.notifyDataSetChanged();
}
+
+ if (mList.size() > 0) {
+ BaseEventBus baseEventBus = new BaseEventBus();
+ baseEventBus.setTopic(ConstantManage.message_count);
+ baseEventBus.setType(MessageStateType.untreated);
+ baseEventBus.setData(mList.size());
+ EventBus.getDefault().post(baseEventBus);
+ }
+
}
- @Override
+ @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEventMessage(BaseEventBus eventBus) {
super.onEventMessage(eventBus);
+ if (eventBus == null) {
+ return;
+ }
//鎺ユ敹澶栭儴鐐瑰嚮浜嬩欢
if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) {
- if (eventBus.getType().equals(HdlCommonLogic.MessageFunctionTabSwitch.nascent.toString())) {
- HdlLogLogic.print("姝e湪鐐瑰嚮銆愯繘琛屼腑銆�");
+ if (eventBus.getType().equals(MessageFunctionTabSwitch.nascent.toString())) {
+ initData();
+ getNascentMessageList(true);
+ // 鍙栨秷绮樻�т簨浠�
+ EventBus.getDefault().removeStickyEvent(eventBus);
+ }
+
+ } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
+ if (eventBus.getType().equals(MessageStateType.untreated)) {
+ //娑堟伅璇︽儏鍥炶皟
+ initData();
updateListData();
}
}
}
+
+ /**
+ * 鑾峰彇鍙戠敓涓殑娑堟伅鍒楄〃
+ *
+ * @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();
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (isShowLoading) {
+ hideLoading();
+ }
+ if (!isShowLoading) {
+ viewBinding.messageNascentSrl.setRefreshing(false);
+ }
+ }
+ });
+ }
+ }
+
+// 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;
+// }
}
--
Gitblit v1.8.0