修复消息Slice进入无法刷新的问题
authorCaisking <Casiking@zhihuishixun.com>
Tue, 14 Oct 2025 03:07:41 +0000 (11:07 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Tue, 14 Oct 2025 03:07:41 +0000 (11:07 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/message/include/MessageView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/message/include/MessageView.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessageView.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/message/include/MessageView.h
code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessageView.cpp

index 9c03f05..79abd45 100644 (file)
@@ -51,6 +51,8 @@ namespace OHOS
         bool SetupViewPage(MessageView *messageView);
         void UpdataButton(int num);
 
+        void RefreshMessageList(const MessageListItem *itemInfo);
+
     private:
         /*无消息界面*/
         UIScrollView *lackView{nullptr};
index a1ba5f1..7e19292 100644 (file)
@@ -52,6 +52,12 @@ namespace OHOS
     {
         model->InitMessageListItems();
         Presenter<MessageView>::OnStart();
+
+        if(view_ != nullptr)
+        {
+            const MessageListItem *itemInfo = model->GetMessageListItems();
+            view_->RefreshMessageList(itemInfo);
+        }
     }
 
     void MessagePresenter::OnPause(void)
index f433600..a165078 100644 (file)
@@ -218,6 +218,17 @@ void MessageView::AddMessageToList(const MessageListItem &item) {
 }
 // 获取列表
 UIList *MessageView::GetList() { return MessageList; }
-/// @brief 创建页面的视图
+
+
+void MessageView::RefreshMessageList(const MessageListItem *itemInfo) {
+  for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageListNum();
+       i++) {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                  "SettingPresenter::OnStart itemInfo[i].itemName:%d", i);
+    AddMessageToList(itemInfo[i]);
+  }
+  MessageList->SetAdapter(p_MessageListAdapter);
+  MessageList->RefreshList();
+}
 
 } // namespace OHOS
\ No newline at end of file
index 9c03f05..79abd45 100644 (file)
@@ -51,6 +51,8 @@ namespace OHOS
         bool SetupViewPage(MessageView *messageView);
         void UpdataButton(int num);
 
+        void RefreshMessageList(const MessageListItem *itemInfo);
+
     private:
         /*无消息界面*/
         UIScrollView *lackView{nullptr};
index a1ba5f1..7e19292 100644 (file)
@@ -52,6 +52,12 @@ namespace OHOS
     {
         model->InitMessageListItems();
         Presenter<MessageView>::OnStart();
+
+        if(view_ != nullptr)
+        {
+            const MessageListItem *itemInfo = model->GetMessageListItems();
+            view_->RefreshMessageList(itemInfo);
+        }
     }
 
     void MessagePresenter::OnPause(void)
index f433600..90bfeab 100644 (file)
  * /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp
  */
 
-#include "message/include/MessageView.h"
-#include "message/include/MessageModel.h"
-#include "message/include/MessagePresenter.h"
-
-#include "UiConfig.h"
-#include "uicomponents/UIComponents.h"
-#include "wearable_log.h"
-namespace OHOS {
-static constexpr char *lineimagePath = "/user/res/message/Line.bin";
-static constexpr char *messageimagePath = "/user/res/message/message.bin";
-static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;
-static constexpr int16_t More_LIST_POSITION_X = 43;
-static constexpr int16_t More_LIST_POSITION_Y = 120;
-static constexpr int16_t More_SCROLLBLANKSIZE =
-    35; // 设置此滚动视图的空白大小。
-static constexpr int16 MAX_SCR_DIS = 1000;
-static constexpr int16 LIST_POS = 20;
-static constexpr int16 SNUM_2 = 2;
-static constexpr uint8_t NUM_2 = 2;
-
-static MessageView *g_pMessageView{nullptr};
-
-MessageView::MessageView() { g_pMessageView = this; }
-
-MessageView::~MessageView() {
-  g_pMessageView = nullptr;
-  DeInitView();
-}
-
-MessageView *MessageView::GetInstance() { return g_pMessageView; }
-void MessageView::InitView() {
-  // 展示界面
-  if (MessageModel::GetInstance().HasDataVector()) {
-    // printf("存在数据!\r\n");
-    SetPopupViewStatus(PopupMessage::MessagePopup, true);
-  } else {
-    // printf("不存在数据!\r\n");
-    SetPopupViewStatus(PopupMessage::LackPopup, true);
-  }
-}
-void MessageView::DeInitView() {
-  if (lackView) {
-    lackView->RemoveAll();
-    if (labeltitle) {
-      delete labeltitle;
-      labeltitle = nullptr;
-    }
-    if (labelmeage) {
-      delete labelmeage;
-      labelmeage = nullptr;
-    }
-    if (imageline) {
-      delete imageline;
-      imageline = nullptr;
-    }
-    if (imagemeage) {
-      delete imagemeage;
-      imagemeage = nullptr;
-    }
-    delete lackView;
-    lackView = nullptr;
-  }
-  if (messageView) {
-    messageView->RemoveAll();
-    if (p_MessageListAdapter) {
-      delete p_MessageListAdapter;
-      p_MessageListAdapter = nullptr;
-    }
-    if (MessageList) {
-      delete MessageList;
-      MessageList = nullptr;
-    }
-    if (imageline2) {
-      delete imageline2;
-      imageline2 = nullptr;
-    }
-    delete messageView;
-    messageView = nullptr;
-  }
-}
-
-void MessageView::PreLoad(void) {
-  if (!viewInitStatus) {
-    InitView();
-    viewInitStatus = true;
-  }
-}
-
-/*无数据界面*/
-void MessageView::ShowLackView() {
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
-  if (lackView == nullptr) {
-    lackView = new UIScrollView();
-    if (lackView == nullptr) {
-      return;
-    }
-  }
-  lackView->SetPosition(0, 0);
-  lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-  lackView->SetScrollBlankSize(20);
-  lackView->SetReboundSize(50);
-  lackView->SetDirection(1);
-  lackView->SetViewId("lackView");
-
-  /*初始化label*/
-  InitRollLabel(labeltitle, 83, 50, 300, 35, "labletitle",
-                STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
-  InitRollLabel(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO,
-                DEFAULT_VECTOR_FONT_FILENAME, 30);
-  labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
-  /*初始化image*/
-  InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath);
-  InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath);
-
-  lackView->Add(imageline);
-  lackView->Add(imagemeage);
-  lackView->Add(labeltitle);
-  lackView->Add(labelmeage);
-
-  AddViewToRootContainer(lackView);
-  lackView->SetDraggable(true);
-  lackView->SetTouchable(true);
-
-  lackView->SetOnDragListener(presenter_);
-
-  lackView->SetVisible(false); // 界面隐藏
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
-}
-
-/*数据界面*/
-void MessageView::ShowMessageView() {
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
-  if (messageView == nullptr) {
-    messageView = new UIScrollView();
-    if (messageView == nullptr) {
-      return;
-    }
-  }
-  messageView->SetPosition(0, 0);
-  messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-  messageView->SetHorizontalScrollState(false); // 设置横向不可以滚动
-  messageView->SetDirection(0);
-  messageView->SetVerticalScrollState(false); // 禁止垂直滑动
-  messageView->SetViewId("messageView");
-
-  InitImageView(imageline2, 193, 30, 80, 8, "image", lineimagePath);
-  messageView->Add(imageline2);
-
-  // UIList 的适配器
-  if (p_MessageListAdapter == nullptr) {
-    p_MessageListAdapter = new MessageListAdapter();
-  }
-
-  p_MessageListAdapter->SetItemClickListener(presenter_);
-  if (MessageList == nullptr) {
-    MessageList = new UIList();
-  }
-  MessageList->SetPosition(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-  MessageList->SetScrollStateListener(this);
-  MessageList->SetThrowDrag(true);
-  MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-  MessageList->SetMaxScrollDistance(1000);
-  MessageList->SetSwipeACCLevel(200);
-  MessageList->SetDragACCLevel(5);
-  MessageList->SetIntercept(true);
-
-  MessageList->SetOnClickListener(presenter_);
-  messageView->SetOnDragListener(presenter_);
-
-  messageView->Add(MessageList);
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageList is add");
-  AddViewToRootContainer(messageView);
-
-  messageView->SetVisible(false); // 隐藏界面
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
-}
-
-/*控制显示界面*/
-void MessageView::SetPopupViewStatus(PopupMessage view, bool status) {
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view);
-
-  if (view == PopupMessage::LackPopup) {
-    MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息
-    lackView->SetVisible(true);                           // 隐藏界面
-    messageView->SetVisible(false);                       // 隐藏界面
-  } else if (view == PopupMessage::MessagePopup) {
-    MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息
-    lackView->SetVisible(false);                         // 隐藏界面
-    messageView->SetVisible(true);                       // 隐藏界面
-  }
-}
-
-/// @brief 页面启动时需要执行的代码逻辑
-void MessageView::OnStart() {
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
-  View<MessagePresenter>::OnStart();
-
-  ShowMessageView();
-  ShowLackView();
-  PreLoad();
-
-  if (MessageModel::GetInstance().HasDataVector()) {
-    if (p_MessageListAdapter) {
-      MessageList->SetAdapter(p_MessageListAdapter);
-    }
-  }
-}
-void MessageView::AddMessageToList(const MessageListItem &item) {
-  p_MessageListAdapter->AddListItem(item);
-}
-// 获取列表
-UIList *MessageView::GetList() { return MessageList; }
-/// @brief 创建页面的视图
-
-} // namespace OHOS
\ No newline at end of file
+ #include "message/include/MessageView.h"
+ #include "message/include/MessageModel.h"
+ #include "message/include/MessagePresenter.h"
+ 
+ #include "UiConfig.h"
+ #include "uicomponents/UIComponents.h"
+ #include "wearable_log.h"
+ namespace OHOS {
+ static constexpr char *lineimagePath = "/user/res/message/Line.bin";
+ static constexpr char *messageimagePath = "/user/res/message/message.bin";
+ static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;
+ static constexpr int16_t More_LIST_POSITION_X = 43;
+ static constexpr int16_t More_LIST_POSITION_Y = 120;
+ static constexpr int16_t More_SCROLLBLANKSIZE =
+     35; // 设置此滚动视图的空白大小。
+ static constexpr int16 MAX_SCR_DIS = 1000;
+ static constexpr int16 LIST_POS = 20;
+ static constexpr int16 SNUM_2 = 2;
+ static constexpr uint8_t NUM_2 = 2;
+ 
+ static MessageView *g_pMessageView{nullptr};
+ 
+ MessageView::MessageView() { g_pMessageView = this; }
+ 
+ MessageView::~MessageView() {
+   g_pMessageView = nullptr;
+   DeInitView();
+ }
+ 
+ MessageView *MessageView::GetInstance() { return g_pMessageView; }
+ void MessageView::InitView() {
+   // 展示界面
+   if (MessageModel::GetInstance().HasDataVector()) {
+     // printf("存在数据!\r\n");
+     SetPopupViewStatus(PopupMessage::MessagePopup, true);
+   } else {
+     // printf("不存在数据!\r\n");
+     SetPopupViewStatus(PopupMessage::LackPopup, true);
+   }
+ }
+ void MessageView::DeInitView() {
+   if (lackView) {
+     lackView->RemoveAll();
+     if (labeltitle) {
+       delete labeltitle;
+       labeltitle = nullptr;
+     }
+     if (labelmeage) {
+       delete labelmeage;
+       labelmeage = nullptr;
+     }
+     if (imageline) {
+       delete imageline;
+       imageline = nullptr;
+     }
+     if (imagemeage) {
+       delete imagemeage;
+       imagemeage = nullptr;
+     }
+     delete lackView;
+     lackView = nullptr;
+   }
+   if (messageView) {
+     messageView->RemoveAll();
+     if (p_MessageListAdapter) {
+       delete p_MessageListAdapter;
+       p_MessageListAdapter = nullptr;
+     }
+     if (MessageList) {
+       delete MessageList;
+       MessageList = nullptr;
+     }
+     if (imageline2) {
+       delete imageline2;
+       imageline2 = nullptr;
+     }
+     delete messageView;
+     messageView = nullptr;
+   }
+ }
+ 
+ void MessageView::PreLoad(void) {
+   if (!viewInitStatus) {
+     InitView();
+     viewInitStatus = true;
+   }
+ }
+ 
+ /*无数据界面*/
+ void MessageView::ShowLackView() {
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
+   if (lackView == nullptr) {
+     lackView = new UIScrollView();
+     if (lackView == nullptr) {
+       return;
+     }
+   }
+   lackView->SetPosition(0, 0);
+   lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+   lackView->SetScrollBlankSize(20);
+   lackView->SetReboundSize(50);
+   lackView->SetDirection(1);
+   lackView->SetViewId("lackView");
+ 
+   /*初始化label*/
+   InitRollLabel(labeltitle, 83, 50, 300, 35, "labletitle",
+                 STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
+   InitRollLabel(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO,
+                 DEFAULT_VECTOR_FONT_FILENAME, 30);
+   labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
+   /*初始化image*/
+   InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath);
+   InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath);
+ 
+   lackView->Add(imageline);
+   lackView->Add(imagemeage);
+   lackView->Add(labeltitle);
+   lackView->Add(labelmeage);
+ 
+   AddViewToRootContainer(lackView);
+   lackView->SetDraggable(true);
+   lackView->SetTouchable(true);
+ 
+   lackView->SetOnDragListener(presenter_);
+ 
+   lackView->SetVisible(false); // 界面隐藏
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
+ }
+ 
+ /*数据界面*/
+ void MessageView::ShowMessageView() {
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
+   if (messageView == nullptr) {
+     messageView = new UIScrollView();
+     if (messageView == nullptr) {
+       return;
+     }
+   }
+   messageView->SetPosition(0, 0);
+   messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+   messageView->SetHorizontalScrollState(false); // 设置横向不可以滚动
+   messageView->SetDirection(0);
+   messageView->SetVerticalScrollState(false); // 禁止垂直滑动
+   messageView->SetViewId("messageView");
+ 
+   InitImageView(imageline2, 193, 30, 80, 8, "image", lineimagePath);
+   messageView->Add(imageline2);
+ 
+   // UIList 的适配器
+   if (p_MessageListAdapter == nullptr) {
+     p_MessageListAdapter = new MessageListAdapter();
+   }
+ 
+   p_MessageListAdapter->SetItemClickListener(presenter_);
+   if (MessageList == nullptr) {
+     MessageList = new UIList();
+   }
+   MessageList->SetPosition(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+   MessageList->SetScrollStateListener(this);
+   MessageList->SetThrowDrag(true);
+   MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+   MessageList->SetMaxScrollDistance(1000);
+   MessageList->SetSwipeACCLevel(200);
+   MessageList->SetDragACCLevel(5);
+   MessageList->SetIntercept(true);
+ 
+   MessageList->SetOnClickListener(presenter_);
+   messageView->SetOnDragListener(presenter_);
+ 
+   messageView->Add(MessageList);
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageList is add");
+   AddViewToRootContainer(messageView);
+ 
+   messageView->SetVisible(false); // 隐藏界面
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
+ }
+ 
+ /*控制显示界面*/
+ void MessageView::SetPopupViewStatus(PopupMessage view, bool status) {
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view);
+ 
+   if (view == PopupMessage::LackPopup) {
+     MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息
+     lackView->SetVisible(true);                           // 隐藏界面
+     messageView->SetVisible(false);                       // 隐藏界面
+   } else if (view == PopupMessage::MessagePopup) {
+     MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息
+     lackView->SetVisible(false);                         // 隐藏界面
+     messageView->SetVisible(true);                       // 隐藏界面
+   }
+ }
+ 
+ /// @brief 页面启动时需要执行的代码逻辑
+ void MessageView::OnStart() {
+   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
+   View<MessagePresenter>::OnStart();
+ 
+   ShowMessageView();
+   ShowLackView();
+   PreLoad();
+ 
+   if (MessageModel::GetInstance().HasDataVector()) {
+     if (p_MessageListAdapter) {
+       MessageList->SetAdapter(p_MessageListAdapter);
+     }
+   }
+ }
+ 
+ void MessageView::AddMessageToList(const MessageListItem &item) {
+   p_MessageListAdapter->AddListItem(item);
+ }
+ // 获取列表
+ UIList *MessageView::GetList() { return MessageList; }
+ 
+ 
+ void MessageView::RefreshMessageList(const MessageListItem *itemInfo) {
+   for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageCount();
+        i++) {
+     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                   "MessageView::RefreshMessageList itemInfo[i].itemName:%d", i);
+     AddMessageToList(itemInfo[i]);
+   }
+   MessageList->SetAdapter(p_MessageListAdapter);
+   MessageList->RefreshList();
+ }
+ } // namespace OHOS
\ No newline at end of file
index 9c03f05..79abd45 100644 (file)
@@ -51,6 +51,8 @@ namespace OHOS
         bool SetupViewPage(MessageView *messageView);
         void UpdataButton(int num);
 
+        void RefreshMessageList(const MessageListItem *itemInfo);
+
     private:
         /*无消息界面*/
         UIScrollView *lackView{nullptr};
index a1ba5f1..7e19292 100644 (file)
@@ -52,6 +52,12 @@ namespace OHOS
     {
         model->InitMessageListItems();
         Presenter<MessageView>::OnStart();
+
+        if(view_ != nullptr)
+        {
+            const MessageListItem *itemInfo = model->GetMessageListItems();
+            view_->RefreshMessageList(itemInfo);
+        }
     }
 
     void MessagePresenter::OnPause(void)
index f433600..1a10baf 100644 (file)
@@ -213,11 +213,22 @@ void MessageView::OnStart() {
     }
   }
 }
+
 void MessageView::AddMessageToList(const MessageListItem &item) {
   p_MessageListAdapter->AddListItem(item);
 }
 // 获取列表
 UIList *MessageView::GetList() { return MessageList; }
-/// @brief 创建页面的视图
 
+
+void MessageView::RefreshMessageList(const MessageListItem *itemInfo) {
+  for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageCount();
+       i++) {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                  "MessageView::RefreshMessageList itemInfo[i].itemName:%d", i);
+    AddMessageToList(itemInfo[i]);
+  }
+  MessageList->SetAdapter(p_MessageListAdapter);
+  MessageList->RefreshList();
+}
 } // namespace OHOS
\ No newline at end of file