获取主页数据并显示流程笔记

1.定义了一个名为 MainViewListItemData 的类,用于存储主界面中每个列表项的数据。

public class MainViewListItemData
{//名字public string m_Name;//描述public string m_Desc;//图片或者视频的urlpublic string m_Url;//是否是小视频,public bool m_IsMove;//点赞数public int m_StartCnt;}

2.定义了一个名为 EventId 的枚举,用于标识各种事件的类型。增加一个主页列表更新的事件ID:HomeUpdateList。

这样的优点是:通过这样的枚举定义,可以方便地标识和管理不同类型的事件。

namespace WeiLai.Enum
{
    public enum EventId
    {
        None,

        #region Login System
        LoginBegin = 1000,
        LoginSucc,
        LoginEnd = 1999,

        HomeBegin = 7000,
        HomeSucc,
        HomeUpdateList,
        HomeEnd = 7999

        #endregion
    }
}

3.需要用于创建和回收事件对象方法。

public static EmptyEvt Fetch(EventId evtId)

{

    var evt = EventMgr.Inst.GetEvent<EmptyEvt>();

    evt.EvtId = (int)evtId;

    return evt;

}
这个方法获取一个特定类型的事件对象,其中参数 evtId 表示事件的标识符。

public override void OnRecyle()

{

    EvtId = -1;

}

这个方法用于回收事件对象,Evtid 设置为 -1,表示该事件的对象已经被回收了。这样可以确保事件对象在被使用之前能被正确地重置,可以避免一些不必要的的数据混乱或错误。

4.在数据管理的脚本中声明一个字典

public Dictionary<int, List<MainViewListItemData>> m_MainViewListData;

这个字典用于存储主视图列表数据,其中键是整数类型,表示主视图列表的索引,值是一个列表,存储了 MainViewListItemData 类型的数据。这个MainViewListItemData是用于存放列表项的数据。

还要初始化这个m_MainViewListData

private void _InitMainViewListData()
        {
            m_MainViewListData = new Dictionary<int, List<MainViewListItemData>>(m_MainTitle.Length);
        }

目的是在初始化阶段为 m_MainViewListData字段创建一个新的字典对象,并设置其大小。

5.需要一个用于获取特定标题索引的数据列表方法和一个用于更新主视图中特定标题的数据的方法

public List<MainViewListItemData> GetMainViewData(int tilteIndex)
{List<MainViewListItemData> list;if (!m_MainViewListData.TryGetValue(tilteIndex, out list)){list = new List<MainViewListItemData>();m_MainViewListData.Add(tilteIndex, list);}return list;
}

这个方法的作用是获取特定标题索引的主视图数据列表,如果该索引对应的数据列表不存在,则创建一个新的列表并将其添加到字典中。

public void UpdateMainView(int tilteIndex, MainViewListItemData[] datas)
{List<MainViewListItemData> list = GetMainViewData(tilteIndex);foreach (var data in datas){list.Add(data);}EventMgr.Inst.Broadcast(IntEvt.Fetch(EventId.HomeUpdateList, tilteIndex));
}

这个方法用于更新主视图中特定标题的数据,并通知事件管理器广播一个主视图更新的事件。

因此需要注册广播事件在注册后还需要反注册。

 public override void Show()
        {
            base.Show();
            
            EventMgr.Inst.Register(EventId.HomeUpdateList, _UpdateList);
        }

当HomeUpdateList事件被触发时,就会调用_UpdateList方法

        public override void UnShow()
        {
            EventMgr.Inst.UnRegister(EventId.HomeUpdateList, _UpdateList);

            base.UnShow();
        }

这样可以在界面隐藏时取消监听 HomeUpdateList 的事件,并移除 _UpdateList  方法。

其中的_UpdateList方法用于确保参数是正确的事件类型

private void _UpdateList(BaseEvent obj)
{if (obj is IntEvt intEvt){var titleIdx = intEvt.m_Value;m_HomeView.UpdateList(titleIdx);}
}

6.需要一个用于获取网络数据的方法,这里用模拟代替。

public void GetMainViewData(int titleIndex)
        {
            TimerMgr.Inst.AddTimer(1.0f, 1, () =>
            {
                MyLogger.Info($"on get main index = {titleIndex}");

                var testData = new MainViewListItemData[Constant.m_MainViewEachRequestNum];
                for (int i = 0; i < Constant.m_MainViewEachRequestNum; i++)
                {
                    var data = new MainViewListItemData();
                    data.m_Name = "name" + i.ToString();
                    data.m_Desc = "desc" + i.ToString();                
                    data.m_Url = 

"https://img2.imgtp.com/2024/04/13/kk2byMrk.png";

                    testData[i] = data;
                }

                DataMgr.Inst.UpdateMainView(titleIndex, testData);
            });
        }
    }

 

代码分析:

通过接受一个整数参数 titleIndex,这个代表数据的标题索引。通过定时器模拟获取数据,最后将获取到的标题索引和数据数组作为参数传递给 UpdateMainView 方法,用于更新主视图数据。

7.追后当拿到数据之后显示在列表视图中,因此需要一个更新列表视图的方法。

public void UpdateList(int titleIdx)
{foreach (var dataList in DataMgr.Inst.GetMainViewData(titleIdx)){// 检查索引是否超出数组范围if (i >=Constant.m_MainViewEachRequestNum){i = 0;}if (i < m_numbers.Length && i < m_numbers2.Length){m_numbers[i] = dataList.m_Name;m_numbers2[i] = dataList.m_Url;i++;}else{MyLogger.Info("i的大小:"+i+"m_numbers的长度:"+m_numbers.Length+"m_numbers2.Length的长度"+m_numbers2.Length);return;            }}m_list2 = _mainView.GetChild("n19").asList;m_list2.SetVirtual();//设置为虚方法m_list2.itemRenderer = RenderListItem1;m_list2.numItems = 50;m_list2.RefreshVirtualList();
}

这个方法通过传入要更新列表的索引,就可以更新指定索引的数据。这样就可以将数据显示在列表视图中了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch中的钩子函数Hook函数

1. 为什么要使用Hook函数&#xff1f; 因为中间变量完成了反向传播后就自动释放了&#xff0c;因此无法读出存储的梯度。 2. 有什么样的Hook函数 torch.autograd.Variable.register_hook import torchdef hook_fn(grad):print("Gradient:", grad)x torch.tensor…

数据结构之单链表相关刷题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构 数据结构之单链表的相关知识点及应用-CSDN博客 下面题目基于上面这篇文章&#xff1a; 下面有任何不懂的地方欢迎在评论区留言或…

wangeditor与deaftjs的停止维护,2024编辑器该如何做技术选型(一)

wangeditor暂停维护的声明&#xff1a; wangeditor是国内开发者开发的编辑器&#xff0c;用户也挺多&#xff0c;但是由于作者时间关系&#xff0c;暂停维护。 deaft的弃坑的声明&#xff1a; draft是Facebook开源的&#xff0c;但是也弃坑了&#xff0c;说明设计的时候存在很大…

LeetCode最长有效括号问题解

给定一个仅包含字符的字符串(’ 和 ‘)’&#xff0c;返回最长有效的长度(出色地-形成) 括号子弦。 示例1&#xff1a; 输入&#xff1a;s “(()” 输出&#xff1a;2 说明&#xff1a;最长的有效括号子字符串是 “()” 。 示例2&#xff1a; 输入&#xff1a;s “)()())…

【leetcode面试经典150题】46. 存在重复元素 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

在Linux上利用mingw-w64生成exe文件

一、概要 1、elf与exe 在Linux上用gcc直接编译出来的可执行文件是elf格式的&#xff0c;在Windows上是不能运行的 Windows上可执行文件的格式是exe 利用mingw-w64可以在Linux上生成exe格式的可执行文件&#xff0c;将该exe文件拷贝到Windows上就可以运行 2、程序要留给用户…

体验Humane AI:我与可穿戴AI别针的生活

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

如何使用 ArcGIS Pro 制作热力图

热力图是一种用颜色表示数据密度的地图&#xff0c;通常用来显示空间分布数据的热度或密度&#xff0c;我们可以通过 ArcGIS Pro 来制作热力图&#xff0c;这里为大家介绍一下制作的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数…

JVM复习

冯诺依曼模型与计算机处理数据过程相关联&#xff1a; 冯诺依曼模型&#xff1a; 输入/输出设备存储器输出设备运算器控制器处理过程&#xff1a; 提取阶段&#xff1a;输入设备传入原始数据&#xff0c;存储到存储器解码阶段&#xff1a;由CPU的指令集架构ISA将数值解…

分布式技术--------------ELK大规模日志实时收集分析系统

目录 一、ELK日志分析系统 1.1ELK介绍 1.2ELK各组件介绍 1.2.1ElasticSearch 1.2.2Kiabana 1.2.3Logstash 1.2.4可以添加的其它组件 1.2.4.1Filebeat filebeat 结合logstash 带来好处 1.2.4.2缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 1.2.4.…

搭建基于Hexo的个人博客,以及git相关命令

全文写完之后的总结 测试命令 hexo clean hexo g hexo s 上传到服务器命令 hexo clean hexo g hexo d 上传到服务器&#xff08;如果上一个命令用不了&#xff09;&#xff0c;也要先hexo clean,hexo g git init git add . git commit -m "first commit" git p…

部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

目录 前置 一、上传&解压 &#xff08;一 &#xff09;上传 &#xff08;二&#xff09;解压 二、修改配置文件 &#xff08;一&#xff09;配置workers文件 &#xff08;二&#xff09;配置hadoop-env.sh文件 &#xff08;三&#xff09;配置core-site.xml文件 &…

Fuel tank position

Fuel tank position 汽车油箱位置在哪里&#xff0c;加油的时候就不会听错方向

uni-app的页面中使用uni-map-common的地址解析(地址转坐标)功能,一直报请求云函数出错

想在uni-app的页面中使用uni-map-common的地址解析&#xff08;地址转坐标&#xff09;功能&#xff0c;怎么一直报请求云函数出错。 不看控制台啊,弄错了控制台&#xff0c;就说怎么一直没有打印出消息。 所以开始换高德地图的&#xff0c;昨天申请了两个 一开始用的第二个web…

OpenAI CEO山姆·奥特曼推广新AI企业服务,直面微软竞争|TodayAI

近期&#xff0c;OpenAI的首席执行官山姆奥特曼在全球多地接待了来自《财富》500强公司的数百名高管&#xff0c;展示了公司最新的人工智能服务。在旧金山、纽约和伦敦的会议上&#xff0c;奥特曼及其团队向企业界领袖展示了OpenAI的企业级产品&#xff0c;并进行了与微软产品的…

前端入门:极简登录网页的制作(未使用JavaScript制作互动逻辑)

必备工具&#xff1a;vscode Visual Studio Code - Code Editing. Redefined 目录 前言 准备 HTML源文件的编写&#xff08;构建&#xff09; head部分 body部分 网页背景设置 网页主体构建 CSS源文件的编写&#xff08;设计&#xff09; 结果展示 前言 博主稍稍自…

如何保证消息不丢失?——使用rabbitmq的死信队列!

如何保证消息不丢失?——使用rabbitmq的死信队列&#xff01; 1、什么是死信 在 RabbitMQ 中充当主角的就是消息&#xff0c;在不同场景下&#xff0c;消息会有不同地表现。 死信就是消息在特定场景下的一种表现形式&#xff0c;这些场景包括&#xff1a; 消息被拒绝访问&am…

IDEA中sql语句智能提示设置

选中一句sql语句&#xff0c;点击鼠标右键 指定数据库

Gitea:开源的轻量级Git服务平台

随着软件开发行业的快速发展&#xff0c;版本控制成为了开发过程中不可或缺的一部分。Git作为一个分布式版本控制系统&#xff0c;已经在全球范围内被广泛使用。而Gitea&#xff0c;作为一个开源的轻量级Git服务平台&#xff0c;为用户提供了一个便捷、高效的自托管Git服务解决…

【MATLAB源码-第47期】基于matlab的GMSK调制解调仿真,输出误码率曲线,采用相干解调。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 GMSK&#xff08;高斯最小移相键控&#xff09;是数字调制技术的一种。下面是关于GMSK调制解调、应用场景以及其优缺点的详细描述&#xff1a; 1. 调制解调&#xff1a; - 调制&#xff1a;GMSK是一种连续相位调制技术&a…