From 96f2b56c103c53b17cf946d2c733d4cb03d2f39d Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 29 一月 2024 15:16:28 +0800 Subject: [PATCH] 2024年01月29日15:16:23 --- app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java | 309 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 308 insertions(+), 1 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 9753060..e672fd4 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,21 +1,328 @@ package com.hdl.photovoltaic.ui.message; +import android.content.Intent; import android.os.Bundle; +import android.os.Handler; +import android.text.TextUtils; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +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.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.other.HdlThreadLogic; +import com.hdl.photovoltaic.ui.adapter.MessageAdapter; +import com.hdl.photovoltaic.ui.bean.HouseIdBean; +import com.hdl.photovoltaic.ui.bean.MessageBean; +import com.hdl.photovoltaic.utils.GlideUtils; +import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.ArrayList; +import java.util.List; /** * 娑堟伅-鍙戠敓涓� */ public class NascentMessageFragment extends CustomBaseFragment { + private FragmentNascentMessageBinding viewBinding; + + private MessageAdapter messageNascentAdapter; + + 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() { - return null; + viewBinding = FragmentNascentMessageBinding.inflate(getLayoutInflater()); + return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { + //鍒濆鍖栨暟鎹� +// initData(); + //鍒濆鍖栫晫闈� + initView(); + //鍒濆鍖栫洃鍚櫒 + initEvent(); + } + private void initData() { + 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); + +// 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(); +// } + } + }); + } + + private void initView() { + 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(); + } + //鍒锋柊銆愬彂鐢熶腑銆戜俊鎭暟閲忔�绘暟 + this.refreshNascentCount(); + this.nullDataUpdateUi(); + + + } + + /** + * 鍒锋柊銆愬彂鐢熶腑銆戜俊鎭暟閲忔�绘暟 + */ + private void refreshNascentCount() { + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + TextView textView = _mActivity.findViewById(R.id.message_tab_nascent_title_tv); + if (textView != null) { + textView.setText(getText(R.string.message_nascent)); + if (mList.size() > 0) { + String s = getText(R.string.message_nascent) + "(" + mList.size() + ")"; + textView.setText(s); + } + } + } + }); + } + + @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(MessageFunctionTabSwitch.nascent.toString())) { + initData(); + getNascentMessageList(true); + getUnreadCount(); + // 鍙栨秷绮樻�т簨浠� + EventBus.getDefault().removeStickyEvent(eventBus); + + } + + } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) { + if (eventBus.getType().equals(MessageStateType.untreated)) { + //娑堟伅璇︽儏鍥炶皟 + initData(); + updateListData(); + getUnreadCount(); + } + } + } + + /** + * 鑾峰彇鍙戠敓涓殑娑堟伅鍒楄〃 + * + * @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 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; +// } + + /** + * 璇诲彇娑堟伅銆愭湭璇绘暟閲忋�� + */ + 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); + } + } + }); + } + + + /** + * 娌℃湁鐢电珯鍒楄〃鐨勬牱寮� + */ + 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); } } -- Gitblit v1.8.0